mar*_*c_s 8 c# sql-server code-first entity-framework-6 visual-studio-2013
我们一直在使用EF 4.0,使用.edmx模型的数据库优先方法.
我们现在升级到EF 6.1.3,我们正在调查是否使用该.edmx模型.我们仍然希望控制我们的数据库模式 - 因此我们将使用SQL脚本创建新表等,然后.edmx从现有数据库生成EF模型(或者只是代码类).
在我使用Visual Studio 2013进行试验期间,我注意到当EF 6从现有数据库创建类时,这是一个烦人的问题.我有一个Customer课程,连接Contact三个班级 - 一次为第DesignContact一次,SalesContact第三次为SupportContact.它们存储DesignContactId (INT)在Customer表格中的等列中.
您可以使用此T-SQL创建这些类:
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),
)
Run Code Online (Sandbox Code Playgroud)
从数据库创建类时,我看到:
Customer类有我的三xxxContactId列作为字段 - 这是预期的Contact-但它调用它们Contact,Contact1,Contact2- uuuuuggghHHHH!我正试图找到一种方法来绕过那些可怕的命名导航属性......这些都很糟糕,因为:
Contact引入第四种关系,它们是"稳定的",还是会随着时间而改变?不确定.....(找不到任何关于此的文档)DesignContact(基于DesignContactId),SalesContact(基于SalesContactId)等?在EF 4.1及更高版本中,您可以将T4模板添加到.edmx并影响生成过程 - 如果您正在使用"从现有数据库生成代码优先"方法,那么仍然可以以某种方式使用EF6吗?我找不到任何关于该主题的博客文章或文章.....
或者是否有另一种方式来影响EF如何生成类 - 最明显的是导航属性?我可以定义某种自定义约定或影响它的东西吗?
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |