Сейчас я работаю над проектом, использующим Entity Framework Core в приложении .NET Core. У меня возникли проблемы с определением зависимой стороны в однозначном отношении между сущностями «Пользователь» и «Учетная запись». Я попробовал настроить сущности и их отношения в соответствии с установленными стандартами, но столкнулся с ошибкой:
Не удалось определить зависимую сторону для одной Связь
-к-одному между «Account.User» и «User.Account». Чтобы определить
зависимую сторону связи, настройте свойство внешнего ключа
...
Мои классы конфигурации выглядят следующим образом :
public class User : BaseModel
{
public Account Account { get; set; }
public int AccountId { get; set; }
}
public class Account : BaseModel
{
public User User { get; set; }
public int UserId { get; set; }
}
public class UserConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.HasOne(u => u.Account)
.WithOne(a => a.User)
.HasForeignKey(a => a.UserId);
}
}
public class AccountConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.HasOne(a => a.User)
.WithOne(u => u.Account);
}
}
CREATE TABLE [dbo].[Accounts] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[UserId] INT NOT NULL,
CONSTRAINT [PK_Accounts] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_Accounts_Users] FOREIGN KEY ([UserId]) REFERENCES [dbo].[Users] ([Id]) ON DELETE CASCADE
);
GO
CREATE INDEX [IX_Accounts_UserId] ON [dbo].[Accounts] ([UserId]);
CREATE TABLE [dbo].[Users] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[AccountId] INT NULL, -- This can be NULL if we set the FK on the Account table
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_Users_Accounts] FOREIGN KEY ([AccountId]) REFERENCES [dbo].[Accounts] ([Id]) ON DELETE NO ACTION
);
GO
CREATE INDEX [IX_Users_AccountId] ON [dbo].[Users] ([AccountId]);
Подробнее здесь: https://stackoverflow.com/questions/785 ... ity-framew