我的SQL的理解是非常基本的,我來自的NHibernate的,所以我用這個問題相當不解世界...一一對一映射問題
我有兩個類:
public class UserProfile
{
public UserProfile() { }
[Key]
public int UserId { get; set; }
public string UserName { get; set; }
public SerialNumber Serial { get; set; }
// Other properties
}
和
public class SerialNumber
{
public SerialNumber()
{
// My code that creates a unique Code
}
[Key]
public string Code { get; set; }
public UserProfile User { get; set; }
// Other Properties
}
我有這個
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Other modelBuilder stuff
modelBuilder.Entity<UserProfile>()
.HasOptional(s => s.Serial)
.WithRequired(u => u.User);
}
我跑Add-Migration
後,我得到這個:
public override void Up()
{
DropForeignKey("dbo.UserProfile", "Serial_Code", "dbo.SerialNumbers");
DropIndex("dbo.UserProfile", new[] { "Serial_Code" });
RenameColumn(table: "dbo.SerialNumbers", name: "Serial_Code", newName: "User_UserId");
AddForeignKey("dbo.SerialNumbers", "User_UserId", "dbo.UserProfile", "UserId");
CreateIndex("dbo.SerialNumbers", "User_UserId");
}
public override void Down()
{
// Inverse of above
}
我跑Update-Database
後,我得到一個錯誤: "Either the parameter @objname is ambiguous or the claimed @objtype (COLUMN) is wrong."
我可以通過Add-Migration
生成的代碼的東西是錯誤的,因爲我的db表沒有按」告訴噸甚至通過"Serial_Code"
我需要Code
名稱有一列是我Key
作爲的EntityFramework沒有一個選項來執行一列是Unique
除了牛逼o讓它成爲關鍵。
如何使Serial
是的UserProfile
和User
一個可選屬性在SerialNumber
當它加入到UserProfile
被自動設置?
謝謝你這麼詳細的解釋 – 2013-04-04 02:05:30