entity framework 数据库优先能否从任何 SQLServer 数据库成功构建模型?

Can entity framework database-first successfully build models from any SQLServer db?

我正在考虑使用 entity framework 数据库优先方法。有问题的数据库使用各种非标准技术,例如 'informal' 外键。我想确认仍然可以从此数据库创建可用的 EF 模型,即使所有关系都无法识别?

是的,你可以做到。照常从数据库生成模型,然后修改生成的实体以引入关系。您需要设置一个 Null 数据库初始化程序来告诉 EF 它不应该尝试更新数据库以匹配其模型:

Database.SetInitializer(new NullDatabaseInitializer<MyContext>());

不需要数据库中存在外键来匹配您的模型 - 只要在实体上添加了导航属性,EF 就会相应地生成正确的 SQL 查询。

我建议使用 [ForeignKey] 属性来阐明外键字段的名称,以防它们不符合 EF 的预期模式(或者您可以相应地修改约定)。例如...

public class Child {
    // ...

    public int Parent_ID { get; set; }     // <-- non-standard name

    // Add these to introduce the navigation property without a formal relationship
    [ForeignKey("Parent_ID")]
    public virtual Parent Parent { get; set; }
}

我已经在完全没有外键的 MySQL 数据库上使用了这种方法。