エンティティフレームワークを使用してasp.net mvcを使用してWebサイトを開発しています。私は既存のデータベースを持っており、その関係を以下に示します。親テーブルに外部キーを作成し、asp.netのエンティティフレームワークを使用して子テーブルに割り当てる方法
親テーブル:
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機能を使用して新しいユーザーを作成
、あるAddressId (プライマリキー)は、アカウントテーブルのAccountId(プライマリキー、ID列)と同じですエンティティフレームワークが外部キーとしてUserIdを使用し、それをAddressesテーブルに割り当てていることを意味します。しかし、私のデータベースでは、外部キーはAccountsテーブルのAddressIdであり、AddressesテーブルのAddressIdを指しています。質問:
私が正しくエンティティクラスに関係を設定していますか?
外部キーとしてAddressId in Accountsテーブルを使用する必要があるエンティティ・フレームワークに、context.Accounts.Add(newAccount)およびcontext.SaveChanges()の後にAddressesテーブルのAddressIdに割り当てる方法を教えてください。 ?
アカウントテーブルで外部キー(AddressId)を生成する方法を教えてください。
こんにちは@aaron、アカウントテーブルにすでに主を指す外部キー(あるAddressId)がありますAddressesテーブルのキーを押します。 Addressesテーブルに新しいプロパティ(AccountId)を作成せずに行うことは可能ですか? Accountsテーブルでon deleteカスケードを設定しました。アカウントが削除されると、関連するアドレスも削除されます。 – IYU
'Addresses'に' Account'というナビゲーションプロパティが必要な場合は、別の 'AccountId'が必要です。代わりに、外部キーを必要としない逆プロパティ 'ICollection'を使用することもできます。 –
aaron
AddressesテーブルのAccountナビゲーションプロパティを削除し、AccountsテーブルのAddressIdに[ForeignKey( "Address")]を設定すると、Entity FrameworkはAccountsテーブルのAddressIdをアドレスのAddressIdに自動的に割り当てません表。どうしたの?それは私に例外を与え、AddressesテーブルのAddressIdをnullにすることはできないと言います。 – IYU