.edmx
モデルを使用するデータベースファーストアプローチでEF 4.0を使用してきました。データベースからのエンティティクラスの作成方法に影響を与える
EF 6.1.3にアップグレードしており、.edmx
モデルを使用するかどうかは検討しています。私たちはまだデータベーススキーマを管理したいと思っています。そのため、SQLスクリプトを使用して新しいテーブルなどを作成し、既存のデータベースからEFモデル(.edmx
またはコードクラスのみ)を生成します。
Visual Studio 2013の試用期間中、EF 6が既存のデータベースからクラスを作成するときに迷惑な点に気付きました。 DesignContact
の場合は1回、SalesContact
の場合は1回、SupportContact
の場合は3回、Contact
クラスにリンクするCustomer
クラスがあります。それらはテーブルにDesignContactId (INT)
などの列として格納されます。データベースからクラスを作成する場合
CREATE TABLE dbo.Contact
(
ContactID INT NOT NULL
CONSTRAINT PK_Contact PRIMARY KEY CLUSTERED,
Name VARCHAR(200),
Address VARCHAR(200),
ZipCode VARCHAR(20),
City VARCHAR(100),
Phone VARCHAR(100)
)
CREATE TABLE dbo.Customer
(
CustomerID INT NOT NULL
CONSTRAINT PK_Customer PRIMARY KEY CLUSTERED,
Name VARCHAR(200),
-- other properties
DesignContactID INT
CONSTRAINT FK_Customer_DesignContact
FOREIGN KEY REFERENCES dbo.Contact(ContactID),
SalesContactID INT
CONSTRAINT FK_Customer_SalesContact
FOREIGN KEY REFERENCES dbo.Contact(ContactID),
SupportContactID INT
CONSTRAINT FK_Customer_SupportContact
FOREIGN KEY REFERENCES dbo.Contact(ContactID),
)
が、私はこれを参照してください:
あなたは、このT-SQLを使用してこれらのクラスを作成することができます
Customer
クラスは、フィールドとしての私の3つのxxxContactId
の列があります - それは期待どおりです- EFは
Contact
の3種類のナビゲーションプロパティも生成しますが、Contact
,Contact1
,Contact2
-uuuuuggghHHHH! - これは1ポイントになりました連絡先に- その直感的ではありません:私はので、これらは悪いです.....それらの恐ろしく悪いという名前のナビゲーションプロパティを回避する方法を見つけるためにしようとしている
?
- は「安定」ですか、または
Contact
の4番目の関係が導入されていると時間の経過とともに変化する可能性がありますか?よくわからない.....(これに関するドキュメントは見つかりません) - 名前は絶対に恐ろしいです...なぜ
DesignContact
(DesignContactId
に基づいて)、SalesContact
(SalesContactId
に基づいて) )など?
EF 4.1では、最大、あなたは.edmx
にT4テンプレートを追加し、生成プロセスに影響を与えることができました - あなたは「既存のデータベースからのコード-最初の生成」やっている場合は、そのまだ可能何とかEF6でありますアプローチ?そのブログの投稿や記事はもう見つけられません.....
また、EFがどのようにクラスを生成するかに影響する別の方法がありますか?これに影響を与えるカスタムコンベンションや何かを定義できますか?
@JulieLerman:この上の任意の考え(EF_の_Queenなど:-)?) –
@RowanMiller:これを処理するためのあなたの袖の上の任意のアイデアやトリックですか? –
適用:http://stackoverflow.com/a/13064383/1207195? –