我的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