- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我遇到了 EF4 和 Proxy Pocos 的问题。
我在同一个程序集中有 2 个同名但不同命名空间的类:
QuoteModels.CashPayment
OrderModels.CashPayment
这编译正常,但在运行时 EF 抛出以下异常:
Schema specified is not valid. Errors: \r\nThe mapping of CLR type to EDM type is ambiguous because multiple CLR types match the EDM type 'CashPayment'. Previously found CLR type 'QuoteModels.CashPayment', newly found CLR type 'OrderModels.CashPayment'
是否有一种变通方法可以让具有不同命名空间的同一程序集中具有相同名称的类与 Ef4 一起使用?
我是否必须给它们不同的名称或将它们移动到另一个程序集中?
最佳答案
我找到了解决方法。这是一个非常明显的非理想解决方法,但我认为在 EF5 出来解决这个问题之前,我认为它对我们来说已经足够好了。
简短回答:只需重命名一个或两个不明确的实体,例如:2x Person
重命名为:Personal_Person
和 Work_Person
基于 PersonalContext
和 WorkContext
。
长答案:在我们的场景中,我们使用的是数据库优先的方法(我们正在重写旧版应用程序,对数据库的更改最少)。我们的数据库包含数百个表,因此我没有使用单个 EDMX/上下文,而是使用多个 EDMX/上下文(每次我尝试添加超过一半的表时,EDMX 都会发出声音)。但是,有些表需要存在于多个 EDMX/Context 中。
为了便于讨论,我们假设我们有一个包含以下表格的简单数据库:
人
家庭
关系
地址
商业
员工
此外,为了便于讨论,我们假设存在于多个上下文中的任何表都会导致此问题(正如我在对 Devart 的回答的评论中所述,这不是真的,我不明白为什么它有时会起作用).
现在假设我们要创建两个上下文:
个人上下文
:
人
家庭
关系
地址
工作环境
:
人
商业
地址
员工
在这种情况下,Person
和Address
都会导致我们的问题。因此,我们将在 EDMX 映射中做的只是将我们的实体重命名为 Personal_Person
/Work_Person
和 Personal_Address
/Work_Address
.
如前所述,这是一个非常明显的非理想解决方法,但由于 EF 不考虑命名空间并严格按照名称(不是真实身份,只是名称)进行操作,因此一种选择是将你的名字里面的命名空间。
现在我仍在争论是否要这样做,或者为每个实体命名空间名称(Personal_Person
、Personal_Family
、Personal_Relationship
、Personal_Address
和 Work_Person
、Work_Business
、Work_Address
和 Work_Employee
) 对于一致性和 Intellisense 友好性(保持所有实体按正确的字母顺序排列)因为实际上,命名空间属于名称之前而不是之后,但这是一个判断调用,对于提供问题的解决方案并不重要。
希望对您有所帮助!!
关于c# - EF4 Poco 问题映射类型相同的名称相同的程序集不同的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354137/
以下哪项是实现 poco 的最佳方式? 选项 1: public class PocoOption1 { public PocoOption1(int val1,string val2) {
我有一个接受 的方法任意 POCO。然后,该方法需要能够检查 POCO 是否为 List。 .如果不是列表,则需要将其转换为列表。 例子 MyCustomMethod(object input) {
我在研究 ADO.net Entity Framework (EF 4.0) 时遇到了这个术语。我很难理解这个词。我知道 POCO 类及其在创建 PI 模型中的用途,但我不确定 POCO 代理。 有人
我在 EF4 CTP5 项目上使用 POCO 类,但在删除子属性时遇到问题。这是我的例子(希望不会太长)。 旅游类相关部分 public partial class Tour { public G
我开始使用 Poco::NotificationQueue。我注意到奇怪的行为,如果多个工作线程使用 waitDequeueNotification() 在同一个 NotificationQueue
在我的一个项目中,我有一些模型不想与 POCO 一起使用,即使用 EF 生成的类和其他一些我想使用 POCO 的模型。当我混合使用它们时,POCO 映射不起作用,我得到一个异常 System.Inva
我看到了这个问题,“POCO 是什么意思?”在网上问了很多,看到很多解释,但我还是不清楚。我知道它代表“Plain Old CLR Object”,但这并不能真正帮助我理解。 有人可以给我一些不是 P
遇到这样的情况怎么办?拥有多个 ViewModel 引用同一个 POCO 对象。 ViewModel A 更新 POCO ......现在 ViewModel B 需要以某种方式了解这一点? 最佳答案
我在 WCF 服务应用程序中有一层业务级对象和一层契约(Contract)级对象。我所指的业务层对象只是我用来保存数据的实体或 POCO 对象。我指的契约(Contract)级对象是构成我的客户看到的
向 POCO 添加方法或创建单独的类以在我们需要时更新 POCO 的值是一种好的做法吗? 例如, public class ForUser { [Required] public in
我在 Poco 中编写了一个 HTTP 客户端,它将 POST 请求发送到 HTTPServer 以下是片段 Poco::Net::HTTPClientSession s("127.0.0.1", 9
我有一个场景,其中我有一些自定义实体在绑定(bind)到其 UI 的系统(桌面)中使用。我已经转向 Entity Framework 以获得它提供的好处,但由于自定义实体与系统紧密耦合,我将继续使用自
我第一次在一个小项目中尝试使用 POCO 的 EF 4。在我的 Repository 实现中,我想提供一个 AddOrUpdate 方法,如果它是新的,它会将传入的 POCO 添加到存储库中,否则什么
我正在尝试将图像上传到远程网络服务器。我使用过 HTMLForm 和 FilePartSource。我能够成功地将图像上传到本地服务器(即 loclhost),但是当我尝试将其上传到远程服务器时,从远
我已尝试将 Entity Framework 4 和 POCO 用于我的 MVC 3 项目。可能是,我不明白这个ORM的主要思想,但问题如下: 我添加了 ADO .NET 实体数据模型并根据数据库制作
我在服务方法中遇到一种情况,其中将 POCO 分配为另一个 POCO 的子对象无法按预期工作。我正在使用 Entity Framework 4。 public void ChangeOrderCurr
我是 POCO lib 的新手,我正在做教程 pdf 上的网络示例。 当我运行 DatagramSocket 发送示例时,我总是会收到 Poco::Net::NetException。 如果我使用教程
有人可以指出 POCO、自我跟踪实体、POCO 代理之间的区别吗? 实际上,我正在使用 Entity Framework 4.0 和 POCO(存储库模式),每当我在 POCO 中进行一些更改并调用
将域对象与任何类型的持久性代码完全分离的能力使系统更具可扩展性和可维护性。当业务逻辑可以与存储代码分开测试时,测试变得更加容易。将 POCO 与 Entity Framework (EF) 一起使用绝
我有 POCO 类,我使用 NewtonSoft json 进行序列化。现在我想将其迁移到Google协议(protocol)buff。有什么方法可以迁移我的所有类(不是手动),以便我可以使用 goo
我是一名优秀的程序员,十分优秀!