将非映射属性添加到实体EF5

时间:2015-01-07 15:45:34

标签: c# entity-framework edmx

我使用EF5从现有的DB结构中生成模型。我将插入/更新/删除存储过程映射到实体。这很好。

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

非常感谢

2 个答案:

答案 0 :(得分:1)

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

如果您在DB中有一个ParticularEntity表并在EDMX中引用,您可以添加一个部分类文件ParticularEntity.Augments.cs(该名称仅供参考,您可以正常使用部分类的倍数)你的项目及其内部

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

或者,您可以编写一组地图使用的扩展方法。我不认为这与使用partials扩展EF类一样干净。

答案 1 :(得分:1)

由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; }       
}