首先使用MVC4数据库,如何使用复合主键注释模型?

时间:2013-01-14 22:26:14

标签: asp.net-mvc-4 composite-primary-key database-first

我是MS的MVC4的新手,我已经获得了一个数据库,我必须构建一个CRUD前端。这些表都具有[TableID,TableName,EffectiveDate]形式的复合主键。我无法改变数据库设计。我使用数据库优先技术和用于C#工具的 EF 5.x DbContext生成器来创建模型,但生成的模型文件不包含复合键的注释。以下是Department表的示例,主键= [DeptID,DeptName,EffDate]。

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace BillableUnits4.Models
{
    using System;
    using System.Collections.Generic;

    public partial class Department
    {
        public int DeptID { get; set; }
        public string DeptName { get; set; }
        public System.DateTime EffDate { get; set; }
        public string Status { get; set; }
        public string Fund { get; set; }
        public string DeptNo { get; set; }
        public string RevenueAccount { get; set; }
        public string BalanceSheetAccount { get; set; }
    }
}

我打赌键应该是这样的:

    [key] 
    public int DeptID { get; set; }
    [key]
    public string DeptName { get; set; }
    [key]
    public System.DateTime EffDate { get; set; }

我是否甚至需要注释主键组件?如果是这样,我应该将注释添加到生成的模型文件中吗? (显然,重新生成文件会擦除我手工制作的任何更改)。有没有办法告诉MVC4 / Visual Studio生成带有正确注释的文件?

1 个答案:

答案 0 :(得分:1)

您不必为数据库注释明显的东西:)您的代码不会使用特定于数据库的注释,所以我不担心这一点。

您可能希望使用[Required]或其他对您的应用数据一致性有意义的注释来装饰您的模型。在这种情况下,您可以使用部分类(http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx)或实现ViewModels(您可以修改,而不必担心自动生成的类,您不应该真正修改)