【发布时间】:2017-08-15 03:18:04
【问题描述】:
我有一个包含一些空间数据的实体...我正在使用System.Data.Entity 程序集中引用的DbGeography 和DbGeometry...
我没有使用EntityFramework.dll 中引用的那个,因为我有一个分层的解决方案,我不想在我的解决方案中到处引用实体框架,而只是在 DAL 内部...
当我尝试添加新迁移时,出现以下错误:
EntityType 'DbGeometry' 没有定义键。定义此 EntityType 的键。
所以我尝试将DbGeometry 属性替换为字符串OnModelCreating 我尝试编写以下代码:
modelBuilder.Entity<AddressInfo>()
.Property(s => s.GeometryLocation)
.HasColumnType("geometry");
但在这种情况下,我收到 String 数据类型与 DbGeometry 数据类型不兼容的错误...
有没有人想办法解决这个问题?有谁知道哪种数据类型与DbGeometry 数据类型兼容?
谢谢
更新
EntityType 'DbGeography' has no key defined 没有解决我的问题。最后,帖子的作者说
[He] 确实必须在 [his] 模型中添加对 Entity Framework 的引用
这正是我想要避免的......
Ryan 也这么说
我认为它可能可以通过一个聪明的数据配置映射来修复,我会玩它,如果我遇到任何可行的技术会更新
知道如何解决吗? 哪种数据类型可以替代 DbGeometry?
【问题讨论】:
-
引用 DAL 时,如果要使用 DAL,还必须引用 EF
-
@Sir Rufo: 一切都正确封装在 DAL 中,并且使用其他一些模式我从 EF 中解开了所有其他层
-
@moondaisy:我已经读过了,但它并没有解决我的问题。事实上,Ryan 说他在他的模型中引用了 EF ......但他也说“我认为它可以用不过,一个聪明的数据配置图,我会玩它,如果我遇到任何可行的技术,我会更新”......我正在寻找那个解决方案
-
如果您还使用业务对象将 BLL 分层,然后在 App 层使用,您可以将您的实体转换为这些对象,因此只有您的 BLL 需要了解 EF。当您将实体一直传递到应用程序层时会出现问题,而不是......我遇到了麻烦......好吧 1 岁的帖子,我知道
标签: c# entity-framework geospatial spatial