7

我们正在使用实体框架 5.0。和数据库 MySQL。当我们尝试迁移时会出现异常。

无法创建,因为无法确定主键列。使用 AddForeignKey fluent API 来完全指定外键。

4

2 回答 2

8

正如这里解释的http://www.ozkary.com/2015/02/the-foreign-key-on-table-with-columns.html,将 FK 放入不属于的表时可能会遇到问题你的数据库上下文

所以而不是做

CreateTable(
    "dbo.App",
    c => new
    {
        Id = c.Int(nullable: false, identity: true),
        Name = c.String(nullable: false, maxLength: 150),
        RoleId = c.String()
    })
    .PrimaryKey(t => t.Id)
    .ForeignKey("dbo.MyRoles", t => t.RoleId)
    .Index(t => t.RoleId);

你应该做:

CreateTable(
    "dbo.App",
    c => new
    {
        Id = c.Int(nullable: false, identity: true),
        Name = c.String(nullable: false, maxLength: 150),
        RoleId = c.String()
    })
    .PrimaryKey(t => t.Id)
    .Index(t => t.RoleId);

AddForeignKey("dbo.App", "RoleId", "dbo.Roles","Id");
于 2016-04-17T17:44:23.637 回答
1

实体框架要求在主表中的整个主键和从属表中的相应列(外键)之间建立关系。

检查所有表是否包含 PRIMARY KEY COLUMN

于 2013-03-15T11:21:38.323 回答