C# 在实体框架中创建递归实体的正确方法是什么?

C# 在实体框架中创建递归实体的正确方法是什么?,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我目前正在使用VS2010RC,我正在尝试创建一个包含递归自引用实体的模型。当前,当我从模型导入实体时,我收到一个错误,指示父属性不能是关联的一部分,因为它被设置为“Computed”或“Identity”,尽管我不确定它为什么这样做。我一直在手工编辑该文件以避免该错误,但是该模型根本无法工作 让递归实体在实体框架中工作的正确方法是什么 默认情况下导入的模型不起作用。我试过几次调整,每次都会出现不同类型的错误。在这一点上,我正在寻找一个解决方案,并解释为什么这个解决方案是正确的 相关数据库对象

我目前正在使用VS2010RC,我正在尝试创建一个包含递归自引用实体的模型。当前,当我从模型导入实体时,我收到一个错误,指示父属性不能是关联的一部分,因为它被设置为“Computed”或“Identity”,尽管我不确定它为什么这样做。我一直在手工编辑该文件以避免该错误,但是该模型根本无法工作

让递归实体在实体框架中工作的正确方法是什么

默认情况下导入的模型不起作用。我试过几次调整,每次都会出现不同类型的错误。在这一点上,我正在寻找一个解决方案,并解释为什么这个解决方案是正确的

相关数据库对象

CREATE TABLE [dbo].[Appointments](
    [AppointmentId] [int] IDENTITY(1,1) NOT NULL,
    [Description] [nvarchar](1024) NULL,
    [Start] [datetime] NOT NULL,
    [End] [datetime] NOT NULL,
    [Username] [varchar](50) NOT NULL,
    [RecurrenceRule] [nvarchar](1024) NULL,
    [RecurrenceState] [varchar](20) NULL,
    [RecurrenceParentId] [int] NULL,
    [Annotations] [nvarchar](50) NULL,
    [Application] [nvarchar](100) NOT NULL,
    CONSTRAINT [PK_Appointments] PRIMARY KEY CLUSTERED 
    (
        [AppointmentId] ASC
    )
)
GO

ALTER TABLE [dbo].[Appointments]  WITH CHECK ADD  CONSTRAINT [FK_Appointments_ParentAppointments] FOREIGN KEY([RecurrenceParentId])
REFERENCES [dbo].[Appointments] ([AppointmentId])
GO

ALTER TABLE [dbo].[Appointments] CHECK CONSTRAINT [FK_Appointments_ParentAppointments]
GO
EDMX
--


按原样,我得到了编译器错误:

无法为列成员“AppointmentId”指定条件,因为它被标记为“Computed”或“Identity”StoreGeneratedPattern

如果删除该错误,则该错误会消失,但只会引入另一个错误:

映射从第3350、3380行开始的片段时出现问题:EntityTypes SafetyTrackerModel.Appointment正在映射到表Appointment中的相同行。映射条件可用于区分这些类型映射到的行

正好是上面标记的[1]行

在这一点上,我不知道我应该做什么。我尝试了很多很多东西,最终我尝试的智能东西都用完了,我进入了货物崇拜的领域


我很想了解这里的问题是什么。

EF可以支持递归对象。 您只需导入模型,EF将获取关系并允许您执行递归

关于你的FK,我不明白你为什么有支票限制。 添加FK应如下所示:

ALTER TABLE Appointments
ADD FOREIGN KEY (RecurrenceParentId) REFERENCES Appointments(AppointmentId);
也许你的FK创作出了问题,EF无法处理

希望这有帮助


编辑:哈哈,刚刚看到9个月前有人问。。。好吧,没关系:)

嗯?为什么要计算父对象或标识?我想应该是同一张桌子的FK。你能显示你的数据库元数据吗?另外,考虑嵌套集合模型。你能给我们SQL表定义吗?我有自引用实体,没有这样的问题。
ALTER TABLE Appointments
ADD FOREIGN KEY (RecurrenceParentId) REFERENCES Appointments(AppointmentId);