我使用EF5从现有的DB结构中生成模型。我将插入/更新/删除存储过程映射到实体。这很好。
我接下来要做的是将UserId作为参数传递给这些SP,但不要将UserId作为基础表中的列(SP将使用此参数)。我有很多实体。是否有可能以某种方式添加一个属性,即使在从DB更新模型后也将一直添加回来?
非常感谢
答案 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; }
}