EF6多对多表,附加日期列

时间:2018-06-04 14:55:52

标签: c# sql-server entity-framework-6

我在数据库优先模式中使用带有表User的EF6。

我希望用户能够通过使用委派与其他用户共享他们的个人资料。为此,我定义了一个包含2列的表UserDelegationIdUserIdDelegatedUser。在此之前,一切都按预期工作。

现在,我想在UserDelegation表中添加一个用于存储日期的列。 问题是:我无法在我的EF6实体中调用此属性,因为实体UserDelegation不可见。因此,我不知道在哪里寻找我的新房产日期

我想知道是否有办法解决这个问题,或者这个架构是否错误?

1 个答案:

答案 0 :(得分:0)

以下是我根据您的描述得到的内容 - 您可以尝试删除EDMX中的实体并尝试重新生成它。

我对你所说的解释:

的DbContext

    public List<UserProfile> GetProfiles()
    {
        using (var ctx = new UserDatabaseEntities())
        {
            var ret = ctx.UserProfiles.Include("UserDelgations").Select(p => p).ToList();
            return ret;
        }
    }

SQL

CREATE TABLE [dbo].[UserDelgations] (
[UserProfileId] UNIQUEIDENTIFIER NOT NULL CONSTRAINT FK_UserProfiles_UserProfileId FOREIGN KEY REFERENCES dbo.UserProfiles (Id) ON DELETE CASCADE,

[UserProfileDelgationId]            UNIQUEIDENTIFIER  NOT NULL,

[AuditDate]                         DATETIME NOT NULL default(getutcdate()),    

) Go

ALTER TABLE [dbo].[UserDelgations] ADD CONSTRAINT PK_UserDelgations PRIMARY KEY ([UserProfileId] ASC, [UserProfileDelgationId] ASC) GO

CREATE TABLE [dbo].[UserProfiles] (
Id uniqueidentifier NOT NULL constraint PK_UserProfiles primary key nonclustered (Id) constraint DF_UserProfiles_Id default(newid()),

UserName NVARCHAR(1024) NOT NULL,

CreatedBy          NVARCHAR(256) NOT NULL default(SYSTEM_USER),
CreatedDate        DATETIME NOT NULL default(getutcdate()), 

) Go