EFcore 属性上注释值,用于fluentapi配置

使用 Entity Framework Code First 时,默认行为是使用 EF 中的一组约定将 POCO 类映射到表。 但有时,你无法或不想遵循这些约定,并且需要将实体映射到约定规定之外的内容。

可以通过两种主要方式将 EF 配置为使用约定之外的其他内容,即注释或 EF Fluent API。 注释仅包含 Fluent API 功能的一个子集,因此存在无法使用注释实现的映射方案。 本文旨在演示如何使用 Fluent API 配置属性。

通常通过重写派生的 DbContext 上的 OnModelCreating 方法来访问 Code First Fluent API。 下面的示例旨在演示如何使用 Fluent API 完成各种任务,并使你能够复制代码并对其进行自定义,使之适用于你的模型。如果你希望查看可以按原样使用的模型,则本文末尾会提供这些模型。

    internal static class Class1
    {
        public static PropertyBuilder HasCommentDefault(this PropertyBuilder propertyBuilder)
        {
            try
            {
                var entityType = propertyBuilder.Metadata.DeclaringEntityType.ClrType;
                if (entityType != null)
                {
                    var propName = propertyBuilder.Metadata.Name;
                    var propertyInfo = entityType.GetProperties().FirstOrDefault(x => x.Name == propName);
                    if (propertyInfo != null)
                    {
            
                        var customAttribute = propertyInfo.GetCustomAttribute<SummaryCommentAttribute>();
                        if (customAttribute != null )
                        {
                            string description = customAttribute.Summary;
                            propertyBuilder.HasComment(description);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.Write($"{nameof(HasCommentDefault)}发生错误,{ex}!");
            }
            return propertyBuilder;
        }
    }


    public class SummaryCommentAttribute : Attribute
    {
        public string Summary { get; }

        public SummaryCommentAttribute(string summary)
        {
            Summary = summary;
        }
    }

你可能感兴趣的:(java,javascript,android)