gpt4 book ai didi

c# - 首先忽略 EF 代码中所有继承对象中的属性

转载 作者:太空狗 更新时间:2023-10-30 01:35:42 25 4
gpt4 key购买 nike

我的 EF 代码优先模型中的所有实体都具有以下抽象基类:

public abstract class BaseEntity
{
public Id {get; set;}
public bool IsDeleted {get; set;}
...
}

我在 DbContextOnModelCreating() 方法中编写了以下代码以忽略 IsDeleted

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
...
modelBuilder.Types().Configure(c => c.Ignore("IsDeleted"));
...
}

但是当它导致以下错误时:

You cannot use Ignore method on the property 'IsDeleted' on type 'MyEntity' because this type inherits from the type 'BaseEntity' where this property is mapped. To exclude this property from your model, use NotMappedAttribute or Ignore method on the base type.

我使用的是 .NET 4,所以我不能使用 [NotMappedAttribute] 来忽略 IsDeleted,所以我使用了以下代码:

public partial class BaseEntity_Mapping : EntityTypeConfiguration<BaseEntity> 
{
public BaseEntity_Mapping()
{
this.HasKey(e => e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.Ignore(t => t.IsDeleted);
}
}

并将 OnCreatingModel() 方法更新为:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
...
modelBuilder.Configurations.Add(new BaseEntity_Mapping());
modelBuilder.Types().Configure(c => c.Ignore("IsDeleted"));
...
}

但问题仍然存在。有什么想法吗?

最佳答案

这是 Entity Framework 5 中已确认的错误。参见 this link .

它应该已在 EF6 中修复。解决方法:将 IsDeleted 设为只读并提供 SetIsDeleted(bool value) 函数。

关于c# - 首先忽略 EF 代码中所有继承对象中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24838933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com