相关疑难解决方法(0)

实体框架核心 - 将小数精度和比例设置为所有小数属性

我想将所有十进制属性的精度设置为(18,6).在EF6中,这非常简单:

modelBuilder.Properties<decimal>().Configure(x => x.HasPrecision(18, 6));
Run Code Online (Sandbox Code Playgroud)

但我似乎无法在EF Core中找到类似的东西.删除级联删除约定并不像在EF6中那么简单,因此我找到了以下解决方法:

EF6:

modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
Run Code Online (Sandbox Code Playgroud)

EF核心:

foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
    relationship.DeleteBehavior = DeleteBehavior.Restrict;
Run Code Online (Sandbox Code Playgroud)

我看后这个,我尝试了类似的方法:

foreach (var entityType in modelBuilder.Model.GetEntityTypes()
    .SelectMany(x => x.GetProperties())
    .Where(x => x.ClrType == typeof(decimal)))
        {
            // what to do here?
        }
Run Code Online (Sandbox Code Playgroud)

我想如果我在正确的轨道上以及如何继续,或者如果没有,我应该开始在所有decimal属性上放置数据注释.

c# entity-framework entity-framework-core asp.net-core

31
推荐指数
1
解决办法
2万
查看次数

更改所有字符串属性最大长度

在EF 6中,我可以这样做:

modelBuilder
  .Properties()
  .Where(p => p.PropertyType == typeof(string) && 
              p.GetCustomAttributes(typeof(MaxLengthAttribute), false).Length == 0)
  .Configure(p => p.HasMaxLength(2000));
Run Code Online (Sandbox Code Playgroud)

由于EF7 ModelBuilder没有这个Properties()功能,我如何在EF7中做同样的事情?

c# entity-framework entity-framework-core

7
推荐指数
1
解决办法
752
查看次数

如何将通用配置应用于ef核心中的所有实体

我的应用程序中具有从基本实体派生的实体,该基本实体使用ef核心代码优先方法。

基类

public abstract class BaseEntity<T> : IEntity<T>
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public T Id { get; set; }

    object IEntity.Id { get { return Id; } set { } }

    private DateTime? createdOn;
    [DataType(DataType.DateTime)]
    public DateTime CreatedOn { get => createdOn ?? DateTime.Now; set => createdOn = value; }

    [DataType(DataType.DateTime)]
    public DateTime? ModifiedOn { get; set; }

    public bool IsDeleted { get; set; }
    // Auto increment for all entities.
    public int OrderId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和一个实体

public …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core

4
推荐指数
1
解决办法
1110
查看次数