我在数据库优先模式中使用带有表User
的EF6。
我希望用户能够通过使用委派与其他用户共享他们的个人资料。为此,我定义了一个包含2列的表UserDelegation
:IdUser
和IdDelegatedUser
。在此之前,一切都按预期工作。
现在,我想在UserDelegation
表中添加一个用于存储日期的列。
问题是:我无法在我的EF6实体中调用此属性,因为实体UserDelegation
不可见。因此,我不知道在哪里寻找我的新房产日期
我想知道是否有办法解决这个问题,或者这个架构是否错误?
答案 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