1

我正在使用实体模型。我更新了一个名为 SalesDetialView 的视图。

在 salesdetialview 我有 3 个实体键。有 1.Type 2.No, 3.Custmor 在此处输入图像描述

SQL:我正在使用这个查询(我只打印 5 列)

从 SalesDetailView 中选择 Customer,Type,No,Salesperson,amount 在此处输入图像描述

但是通过实体模型我没有得到重复的值(否)。请参阅下面的屏幕在此处输入图像描述

现在我怀疑为什么它没有显示重复值。与实体键或任何事物相关的任何事物。请建议我在哪里做错了。

4

2 回答 2

1

如果多行在主列中共享相同的值,则似乎只有第一列从数据库中检索并复制到这些其他行中。例如,如果一个集合有 2 列,第一列被标记为主列,并且

the correct result should be:

A, 1
A, 2
B, 4
B, 6
B, 7
C, 5


The actual result in code with Entity Framework would become:


A, 1
A, 1
B, 4
B, 4
B, 4
C, 5

在实体模型中包含视图时,模型似乎只是使用第一个不可为空的列作为主键(因为主键中使用的所有列都应该是不可为空的)。要解决此问题,请确保正确选择了主键列。如果您因为空值或只是没有每行不同的列集而无法创建正确的主键,请尝试在视图中添加一列,该列始终包含每行的唯一值。添加后,请确保将其设置为实体模型中的主键。

如果在上面的示例中将两行都设置为主列,我会得到所需的结果。

于 2012-10-27T11:21:19.930 回答
1

您可以通过更改ObjectSet. 例子:

 using (TargetDBDataContext db = new TargetDBDataContext())
        {
            db.SomeView.MergeOption = System.Data.Objects.MergeOption.NoTracking;
            return db. SomeView.ToList();
        }
于 2012-10-27T14:57:59.707 回答