【问题标题】:ObjectContext.CreateDatabase() creates additional tables that are not in the .edmx modelObjectContext.CreateDatabase() 创建不在 .edmx 模型中的其他表
【发布时间】:2013-02-12 12:40:00
【问题描述】:

我有以下代码:

HorekoEntities db = new HorekoEntities(Utils.GetDbConnStrByName(db_name));
if (!db.DatabaseExists())
{
    db.CreateDatabase();
}

它使用来自 HorekoEntities 模型的表创建一个数据库。 问题是它添加了 3 个不在该模型中的附加表。我在模型中有这些表,但我也从模型和数据库中删除了它们。

在 debagging 时,我在 db 中看不到这些表,它们不在 db.CreateDatabaseScript() 中。 (我在某处读到 CreateDatabase() 首先调用 CreateDatabaseScript() 然后使用该脚本创建数据库)

MSDN 文档将方法描述为:

“使用当前数据源连接和 StoreItemCollection 中的元数据创建数据库。”

我正在尝试找出 StoreItemCollection 中的内容,但我不知道如何找到它。 也许StoreItemCollection 以某种方式缓存了这 3 个表?

另一件可能很重要的事情是,这个问题只发生在我们实时服务器的连接字符串上。在我的机器上本地没有。

【问题讨论】:

    标签: c# database entity-framework objectcontext


    【解决方案1】:

    您使用设计器从上下文中删除了表格,对吧?它们仍在您的 SSDL 中。以文本形式打开您的 EDMX(XML 编辑器),搜索表名,然后删除对该表的任何引用。

    【讨论】:

    • 我查过,这些表不在设计器中。它们不在项目中的任何位置。
    • 别看设计师。查看 EDMX。
    • 额外的表不在项目中的任何位置。我在对象浏览器中搜索它们,在 HorekoEntities.Designer.cs 中,在 .edmx 后面的 xml 中。暂时我会把它们留在那里,等我有时间再回来。(希望早点)
    • 我只希望在 XML 中看到它们。我不希望在 Designer.cs 或对象浏览器中看到它们。 XML 是商店项目的来源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多