我在我的项目中使用数据库中的表创建了一个概念模型。这个表与数据库中的其他一些表有关,我不会在项目中创建模型(表格很大,是为另一个应用程序设计的)。相反,我的DBA已经创建了一些存储过程供我使用,它将从这些表中返回我需要的相关数据(使用复杂类型)。
概念模型有三个属性,映射到表中的三个ID列(相关表的FK)。在我的项目视图中,我将模型绑定到gridview,因此带ID的字段值不是很有用。为此,我添加了上面提到的存储过程并将函数导入到复杂类型,然后将复杂类型属性添加到每个复杂类型的模型中。这没用。我一直收到错误3004:映射片段的问题......其中复杂类型属性未映射到模型中的值。
以下是我的表格的示例,其中包含一个复杂类型属性:
DisplayID
StoreID = StoreID,StoreName,StoreLocation **
订单ID
产品ID
DisplayLocation
显示尺寸
** StoreID是Complex Property Type,StoreID,StoreName,StoreLocation构成ComplexType;我将Complex Type的StoreID映射到数据库中表的StoreID。
我上面的场景并不适合我在添加复杂属性类型时看到的示例。我见过的例子如下:
DisplayID
Store = StoreName,StoreLocation
为了
产品
DisplayLocation
显示尺寸
我是否需要更改数据库中的表结构,如上面的示例?我应该在数据库中为每个复杂类型创建表吗?需要知道为什么我可以说服我的DBA使用我需要的列而不是ID列,并创建新表来代替他为我创建的存储过程。
提前感谢您的帮助!
答案 0 :(得分:0)
您似乎尝试将导航属性“StoreID”映射到不受支持的复杂类型(请参阅Complex Type documentation)。复杂类型实际上是对您实体的标量属性进行分组(或者您可以将它们映射到存储过程o / p&然后它们可以在独立基础上使用)。
我建议您使用视图而不是存储过程来获取数据(并以与在实体模型中使用表格相同的方式使用视图 - 因此store
将是视图)。我相信,很容易说服你的DBA查看视图而不是直接访问表格。