【发布时间】:2011-02-16 15:28:12
【问题描述】:
我正在使用 Entity Framework 4.0、C# 4.0、.Net 2010 和 SQL Server 2008 R2。我在我的 SQL Server 数据库中创建了以下视图:
create view viewGetMember
as
select distinct
row_number() over (order by member.Membership_Number) ID,
email.Communication_Point_Id id1,
member.Membership_Number Number,
dvt.Default_Name ParticipationStatus,
person.Given_Name GivenName,
person.Last_Name LastName,
adrs.House_Number HouseNumber,
adrs.Street Street,
adrs.Post_Code PostCode,
email.Email_Address EmailAddress
from
Participation member
inner join
Party_Participation pp on member.Participation_Id = pp.Participation_Id
inner join
Party party on pp.Party_Id = party.Party_Id
inner join
Individual person on party.Party_Id = person.Party_Id
inner join
Domain_Value_t9n dvt on member.Participation_Status = dvt.Domain_Value_Id
inner join
Communication_Point cpadrs on party.Party_Id = cpadrs.Party_Id
inner join
Communication_Point cpemail on party.Party_Id = cpemail.Party_Id
inner join
[Address] adrs on cpadrs.Communication_Point_Id = adrs.Communication_Point_Id
inner join
Email email on cpemail.Communication_Point_Id = email.Communication_Point_Id
where
member.Membership_Number is not null
go
select * from viewGetMember
想在实体框架中添加这个视图。但是,它不包含主要内容。虽然以下两个字段可以形成复合主键(第二列和第三列)。
- email.Communication_Point_Id id1
- member.Membership_Number 编号
我不知道如何将它们添加为实体框架的一部分。即使我已经尝试将row_number()(第一列)添加为附加列,因为我认为它将充当一种主键但没有用。实体框架设计器未在 .edmx 模型文件中添加此视图。
我已经通过完全删除 .edmx 文件和新项目中的实体框架尝试了这一点,但没有运气。谁能给我一个解决这个问题的方法。
【问题讨论】:
-
使用 ROW_NUMBER() 时 distinct 的目的是什么?无论如何,所有行都是不同的。
-
@Damien_The_Unbeliever,我在添加 row_number() 之前就添加了 distinct。我认为 row_number() 可以解决实体框架的主键要求。但正如我所说,没有用。
标签: c# entity-framework entity-framework-4 linq-to-entities ado.net-entity-data-model