【问题标题】:Add a non mapped property to entity EF5向实体 EF5 添加非映射属性
【发布时间】:2015-01-07 15:45:34
【问题描述】:

我正在使用 EF5 从现有的数据库结构中生成模型。我将插入/更新/删除存储过程映射到实体。这工作正常。

接下来我想做的是将 UserId 作为参数传递给这些 SP,但不将 UserId 作为基础表中的列(SP 将使用此参数)。我有很多实体。是否有可能以某种方式添加一个属性,即使在从数据库更新模型后也总是会重新添加?

非常感谢

【问题讨论】:

标签: c# entity-framework edmx


【解决方案1】:

如果您使用 EDMX 生成实体框架对象模型,则您的类是部分的,您可以向实体的部分类添加属性,这些属性将在数据库重新生成后继续存在。

如果您在 DB 中有一个 ParticularEntity 表并在 EDMX 中引用,您可以在您的项目中添加一个分部类文件 ParticularEntity.Augments.cs(名称供您参考,并且您可以像平常一样拥有多个分部类)并在其中

public partial class ParticularEntity
{
    public string UserId { get; set; }
    public void DoSomething(string userId)
    {
        someFunctionThatYouWantToNotBeAnExtension();
    }
}

或者,您可以编写一组地图使用的扩展方法。不过,我认为这并不像使用部分扩展 EF 类那样干净。

【讨论】:

    【解决方案2】:

    EF 创建的实体是部分类,因此您可以使用自定义属性扩展该类

    YourEntity.cs //created by EF
    
    public partial class YourEntity
    {
    
        public string Name { get; set; }
        ...
    }
    
    YourEntityExtended.cs // created by you
    
    public partial class YourEntity
    {
    
        public int Id { get; set; }       
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      相关资源
      最近更新 更多