获取 SQL 在实体框架中创建新表

Posted

技术标签:

【中文标题】获取 SQL 在实体框架中创建新表【英文标题】:Get SQL creating new table in Entity Framework 【发布时间】:2014-02-16 17:36:08 【问题描述】:

我使用 Entity Framework 6.0.2 作为 ORM,我创建了新类型

public class DataSourceImportReport

    public int Id  get; set; 
    public int ImportedCount  get; set; 
    public DateTime ImportDate  get; set; 
    public DataSource DataSource  get; set; 

我添加了映射到OnModelCreating 方法

ModelBuilder
    .Entity<DataSourceImportReport>()
    .Map(m => m.ToTable("DataSourceImportReports", dataSourceSchemaName));

我想获取 EF 生成的 SQL 语句以在数据库中添加适当的表。

我该怎么做?

【问题讨论】:

我不太清楚你的问题。为什么需要 sql 语句来创建表,如果你设置了一切正确 ef 在你第一次调用数据库时创建表。 【参考方案1】:

您可以使用ExecuteCommand() 方法自己创建表,例如

db.ExecuteCommand("CREATE TABLE...");

【讨论】:

EF 将在数据库中创建表,我想获取这个创建表的 sql【参考方案2】:

您可以在 consol 包管理器中使用此代码并生成数据库:

PM> enable-migrations

PM> add-migration a

PM> update-database -verbose

你必须在启动项目中设置连接字符串。

【讨论】:

也就是说,桌子会贫血。没有条件,没有索引,没有高级选项。好的,表高级选项很少使用,但见鬼,唯一约束和索引是某种基线。 查看此链接; weblogs.asp.net/manavi/archive/2011/01/23/… 是的,正如我所说 - 贫血。见过过滤索引吗?一个与关系无关但用于咳嗽加速查询的索引?分区表?或者计算字段....有一个索引来加速查询?正如我所说 - 贫血。尽可能原始,最小的公分母,对于每个从未读过 SQL 书籍的人来说已经足够了。 ok..我认为你应该读一本关于实体框架和 orm 概念的书。 几乎没有。我很久以前写过类似的东西。关键是问题是数据库的自动生成,而我所知道的任何 ORM 都做得很糟糕。不,与某些人的想法相反,ORM 不会消除对这些功能的需求。显然,您从未从事过这样的数据库项目,人们会花一天的时间来调整兜售的迁移脚本,其中包含一些对小数据无用的 sql server 功能。就这样吧。迁移对于真正复杂的数据库工作来说是很糟糕的。

以上是关于获取 SQL 在实体框架中创建新表的主要内容,如果未能解决你的问题,请参考以下文章

带有 EF6 的 WPF 应用程序不会在 SQL Server Enterprise 中创建新数据库

oracle

如何从视图中复制数据并在 sql server 数据库中创建新表? [复制]

如何在 SQL Server 或实体框架中创建没有主键的一对多关系?

在数据存储中创建新实体时“争用过多”

Symfony2 在表单本身中创建新的实体元素