Entity Framework 4.3 Code-FIrstを使用して新しいデータベースモデルを作成しています。 Fluent APIを使用します。ダミーモデルは以下の通りです。EntityFrameworkとFluentAPIでComplexTypesを使用する
私の主な目的は何かであり、私はこれを把握する必要があります。他のすべてのアイテムは援助しています。通常、データベースでは、連絡先、プライマリキー、関係のためのforeginキーなどのテーブルを割り当てます。しかし、Fluent APIとComplex Types、特にthis articleについてもっと読むと、私はEFがそれらのオブジェクト/テーブルを結びつけることができると気付きました。私はそれらをMVCのリポジトリとして心配する必要はありませんアプリ。
ので注意してください。
- 何かが1
- 問い合わせ と多くの連絡先は、アドレスを持つ多くの1件の
- 問い合わせはPhoenNumber
知ると、多くのものを持っていましたこれは、私の混乱は複雑なタイプの中にあります。なぜなら、連絡先は一意かつ複雑なタイプのためです。& PhoneNumberは複雑なタイプなのでメーキング。
- Fluent APIでこの関係を設定するにはどうすればよいですか?
- 住所は必須ですか?
- ASP.NET MVCでドメイン駆動型開発を使用すると、コントローラにプッシュするためにIContactRepositoryとIAddressRepositoryのリポジトリを維持する必要がありますか?
(いくつかのコードを簡潔にするため省略していることに注意してください。)
// attempt
void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.ComplexType<Contact>();
modelBuilder.ComplexType<Contact>().Property(p => p.Address).IsRequired(); // COMPILER ERROR
modelBuilder.ComplexType<Address>();
modelBuilder.ComplexType<PhoneNumber>();
}
// DUMMY MODEL
class Something()
{
void Something()
{
this.Contact = new HashSet<Contact>();
}
DateTime DOB { get; set; }
int YearsEmployed { get; set; }
ICollection<Contact> Contact { get; set; }
}
class Contact()
{
void Contact()
{
this.Address = new HashSet<Address>();
}
ICollection<Address> Address { get; set; }
}
class Address()
{
string Street1 { get; set; }
string Street2 { get; set; }
string State { get; set; }
string City { get; set; }
string Zip { get; set; }
OptionName OptionName { get; set; }
}
class PhoneNumber()
{
string Number
OptionName OptionName { get; set; }
}
class OptionName()
{
string OptionName { get; set; }
}
「modelBuilder.ComplexType();」を呼び出すことは、クラスに '[ComplexType]'属性を流暢に適用する方法です。 –
Jess