1

我正在使用带有 Razor/MVC 3 的 VS 2010 创建一个表单,其中用户 1 使用 RequestQueue 模型(这只是一个队列表)向数据库提交信息。用户 2 然后拉取此信息,批准它,然后通过 DbRequestForm 模型将数据发送到主数据库。然而,该模型由几个子模型(Data_Dictionary、SERVER_DATABASE 和 DatabaseRequestInfo)组成,因为提交的数据需要转到三个单独的表。

问题是,每当我批准将数据从 RequestQueue 提交到 DbRequestForm 时,我都会收到一条错误消息,指出 DbRequestForm 没有主键。但是,每个子模型都有一个PK。我还尝试将 [Key]public int SrvrDB_ID { get; set; }和其他变体添加到 DbRequestForm 无济于事。

初始型号:

public class RequestQueue
{
    [Key]
    public int SrvrDB_ID { get; set; }
    public string dbName { get; set; }

    public int InitialSpaceNeeded { get; set; }
    public string ScheduledJobSetup { get; set; }

    public string PII_data { get; set; }
}

封装模型:

public class DbRequestForm
{
    public Data_Dictionary Data_Dictionary { get; set; }
    public DatabaseRequestInfo DatabaseRequestInfo { get; set; }
    public SERVER_DATABASE SERVER_DATABASE { get; set; }
}

基于最后三个表格的模型:

public class Data_Dictionary
{
    [Key]
    public int SrvrDB_ID { get; set; }
    public string PII_data { get; set; }
}

public class SERVER_DATABASE
{
    [Key]
    public int SrvrDB_ID { get; set; }
    public string dbName { get; set; }
}

public class DatabaseRequestInfo
{
    [Key]
    public int SrvrDB_ID { get; set; }
    public int InitialSpaceNeeded { get; set; }
    public string ScheduledJobSetup { get; set; }
}

任何想法如何避免这个错误?提前致谢!

编辑:具体错误是'

System.Data.Edm.EdmEntityType: : EntityType 'DbRequestForm' 没有定义键。定义此 EntityType 的键。System.Data.Edm.EdmEntitySet: EntityType: EntitySet DbRequestForms 基于没有键的类型 DbRequestForm '

4

1 回答 1

1

该错误告诉您需要为 DBRequestForm 定义键。如果属性称为“Id”或“类名 Id”,Code First 会推断该属性是主键。在您的情况下,您必须添加

[Key]
public int DBRequestFormId { get; set; }

这个具体的错误将不再出现。这是代码如何首先工作的详细信息 http://blogs.msdn.com/b/efdesign/archive/2010/06/01/conventions-for-code-first.aspx 请参阅主键部分

于 2013-06-07T18:17:51.917 回答