【发布时间】:2018-03-26 20:47:11
【问题描述】:
我正在使用带有实体框架的 asp.net mvc 开发一个网站。我有一个现有的数据库,关系如下所示。
父表:
public class Accounts
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public int AddressId { get; set; }
public virtual Addresses Address { get; set; }
//Other properties...
}
子表:
public class Addresses
{
[Key, ForeignKey("Account")]
public int AddressId { get; set; }
public virtual Accounts Account { get; set; }
//Other properties...
}
//创建用户逻辑:
public void CreateUser(UserModel model)
{
Addresses newAddress = new Addresses()
{
ShippingFirstName = "1",
ShippingLastName = "1",
ShippingAddress = "1",
ShippingAddress2 = "1",
ShippingCity = "1",
ShippingState = "1",
ShippingZip = "1",
ShippingCountry = "1",
ShippingPhone = "1",
};
Accounts newAccount = new Accounts
{
UserFirstName = "a",
UserLastName = "a",
UserEmail = model.UserEmail,
UserPassword = model.UserPassword,
AddressId = 1,
UserType = "User",
Address = newAddress
};
context.Accounts.Add(newAccount);
context.SaveChanges();
}
当我使用 CreateUser 函数创建新用户时,Addresses 表中的 AddressId(primary key) 与数据插入数据库后 Accounts 表中的 AccountId(primary key, identity column) 相同,这意味着实体框架使用 UserId 作为外键并将其分配给 Addresses 表。但是,在我的数据库中,外键是 Accounts 表中的 AddressId,并指向 Addresses 表中的 AddressId。
问题:
我在实体类中设置的关系是否正确?
如何告诉实体框架它应该使用 Accounts 表中的 AddressId 作为外键,并在 context.Accounts.Add(newAccount) 和 context.SaveChanges( )?
我应该如何在 Accounts 表中生成外键(AddressId)?
【问题讨论】:
标签: c# mysql asp.net asp.net-mvc entity-framework