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