我如何避免为实体框架添加哈希到我的实体名称

Posted

技术标签:

【中文标题】我如何避免为实体框架添加哈希到我的实体名称【英文标题】:How i can avoid hash added for Entity Framework to my entity name 【发布时间】:2019-03-18 07:28:37 【问题描述】:

有人能帮我理解为什么实体的框架会在实体名称中添加“哈希”或类似的东西吗?

我有一个命名实体 BankMovementHeader 但是,当使用实体框架恢复数据库时,给我带来了 System.Data.Entity.DynamicProxies.BankMovementHeader_D10A1C5179505A4186BA0005487B525128E7B58FBCA552E31ED17A33A4671673 之类的东西,不知道为什么要添加 _D10A1C5179505A4186BA0005487B525128E7B58FBCA552E31ED17A33A4671673 的值。

这对我不利,因为我想使用实体在 xml 对象中对其进行分析。

【问题讨论】:

尝试修改您的 DbContext 类,例如 => public YourDbContext() : base("name=YourDbContext") Database.SetInitializer<YourDbContext>(null); Configuration.ProxyCreationEnabled = false; 感谢@ershoaib 的回复,如果我的 DbContext 是使用实体框架创建的(DB First Approach),我该怎么做 对于 DB 优先方法,当您在应用程序中为 DbContext 创建全局变量时,只需将其设置为 _dbContext.Configuration.ProxyCreationEnabled = false; 非常感谢@ershoaib,现在可以正常使用了。 我将此添加为您的问题的答案,您只需在答案左侧标记刻度以使其变为绿色:) 【参考方案1】:

1) 如果您使用带有Code-First 方法的实体框架。然后修改 DbContext 类的实现,例如

public YourDbContext() : base("name=YourDbContext")

    //Your other configuration here
    Configuration.ProxyCreationEnabled = false;

2) 如果您使用带有Database-First 方法的实体框架。然后在你的应用程序中为DbContext 设置你的全局变量。

_dbContext.Configuration.ProxyCreationEnabled = false;

【讨论】:

@AdolfoMazariegos,很高兴听到 :)

以上是关于我如何避免为实体框架添加哈希到我的实体名称的主要内容,如果未能解决你的问题,请参考以下文章

如果Core Data count / fetch请求中的实体名称错误,如何避免崩溃?

如何避免实体框架与空/空数据库的连接

实体框架代码优先 - 通过主键将子实体添加到父实体

如何在避免复杂对象的情况下将 dto 映射到实体

视图和实体框架

使用实体框架的导航属性的有意义的名称