我想在我的应用程序中使用Money值对象。我找到了几个Money datatype的例子。但我无法弄清楚如何在EF4中使用它们。我想将每个金额存储为Decimal / CurrencyCode对(其中currencycode是一个字符串 - “USD”,“SEK”等)在数据库中。我尝试创建一个complexType但我无法让它工作。这可能吗?
答案 0 :(得分:1)
应该是绝对可能的。您的复杂类型只是一对十进制和字符串属性。它正是用于复杂类型的。根据您的方法,您必须这样做:
数据库优先:
您将首先定义数据库。您的表将包含代表您的新类型的money和varchar列。从数据库更新EDMX模型时,它会将其作为实体的标量属性包含在内。您必须删除这些属性。然后转到模型浏览器并创建新的复杂类型。返回实体并添加新复杂类型的复杂属性。最后,您必须转到实体映射并将复杂类型映射到这些数据库列。
以下是来自MSDN的基本教程,但由于未知原因,他们没有包含截图等基本细节。 Here是来自channel9的一些视频。
模型第一:
这与数据库优先类似,但您不必处理数据库创建和映射。它将为您生成。
代码优先(EF 4.1):
您必须为复杂类型创建单独的类,并将其用作实体中的属性。默认情况下,您不需要映射它 - 应该进行映射。如果它不起作用,您可以使用ComplextTypeAttribute
注释或在DbModelBuilder
中定义映射来映射Complext类型。
如果您提供更多详细信息,我可以进一步扩展您需要使用的方法。