我使用EF代碼優先生成我的DB架構(EF 6,.NET 4.5.2)。我有兩個班我想插入:EF代碼優先遷移不編譯
public class MatrixFile
{
[Key]
public int Id { get; set; }
public string FilePath { get; set; }
public virtual List<MatrixData> Data { get; set; }
}
public class MatrixData
{
[Key]
public int Id { get; set; }
public int OdPairKey { get; set; }
public double Value { get; set; }
}
這裏是我的DbContext
public class MyDataContext : DbContext
{
public virtual DbSet<MatrixFile> MatrixFiles { get; set; }
public virtual DbSet<MatrixData> MatrixData { get; set; }
}
我嘗試通過鍵入以下命令進入包管理器控制檯產生EF我的DB模式:
Enable-Migrations
Add-Migration GenerateDatabase
這是EF爲我生成的遷移:
public partial class GenerateDatabase : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.MatrixDatas",
c => new
{
Id = c.Int(nullable: false, identity: true),
OdPairKey = c.Int(nullable: false),
Value = c.Double(nullable: false),
MatrixFile_Id = c.Int(),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.MatrixFiles", t => t.MatrixFile_Id)
.Index(t => t.MatrixFile_Id, name: ""IX_MatrixData_MatrixFile_Id"");
CreateTable(
"dbo.MatrixFiles",
c => new
{
Id = c.Int(nullable: false, identity: true),
FilePath = c.String(),
})
.PrimaryKey(t => t.Id);
}
public override void Down()
{
DropForeignKey("dbo.MatrixDatas", "MatrixFile_Id", "dbo.MatrixFiles");
DropIndex("dbo.MatrixDatas", ""IX_MatrixData_MatrixFile_Id"");
DropTable("dbo.MatrixFiles");
DropTable("dbo.MatrixDatas");
}
}
行.Index(t => t.MatrixFile_Id, name: ""IX_MatrixData_MatrixFile_Id"");
由於IX_MatrixData_MatrixFile_Id
左右的雙引號引起編譯錯誤。這是爲什麼發生?我怎樣才能獲得它來生成正確的移植代碼,而無需手動侵入遷移?
爲什麼地球上有一個dobule報價呢?只是刪除它,它會工作 – Stormhashe
嗨@Stormhashe。您的評論基本上重述了我的問題,但拼寫和語法更差。我知道我可以通過刪除多餘的引號來修復它。但是,你知道EF爲什麼生成代碼嗎? – Steztric
你在使用MSSQL嗎? –