繁体   English   中英

在扩展类中为ASP.NET MVC和EF添加注释

[英]Add annotations in extension class for ASP.NET MVC and EF

我在数据库设计中犯了一个DivID错误:我有一个表( Divisions ),其PK的DivIDDivID (而不是ID )。 我正在使用Entity Framework v6.0创建ASP.NET MVC应用程序,但收到一个错误消息,我的实体类型Division没有定义键。

在EMDX设计器中,当我查看这些字段属性时,它确实表明Key为true,但是生成的实际Division类不包含[Key]属性。

我可以添加它,以及using System.ComponentModel.Annotations; 但是当我重新生成模型时,我必须进入并再次添加这些行。 我正在尝试通过使用扩展类来解决问题:

[MetadataType(typeof(Division_Validation))]
public partial class Divison
{
}

[Bind(Include="DivID")]
public partial class Division_Validation
{
    [Key]
    public int DivID { get; set; }
}

如在这里找到。 但这是行不通的。 我猜测[Key]由于某种原因无法以这种方式定义。

除了重命名数据库中的字段之外,还有什么方法可以解决我的问题?

我尝试自定义映射,以使Entity对象具有ID而不是DivID ,但是引发了一个错误,指示该模型与数据库已过期,并且需要先通过代码迁移来更新数据库。 听起来好像它实际上将要更新我不想要的数据库,因为现有的桌面应用程序正在使用它,并且要求它不要这样更新。

更新

我完全删除了模型,包括web.config连接字符串设置,然后重新添加了模型。这一次,我在添加模型后直接设置了自定义映射(将DivID从数据库侧映射为实体侧的ID )而且效果很好。 我假设这是预期的工作流程,但是如果有一种方法可以使MetadataType用于[Key]批注,那么它似乎是首选方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM