Проблемы с определением зависимой стороны в отношениях «один к одному» с ядром Entity FrameworkC#

Место общения программистов C#
Ответить
Anonymous
 Проблемы с определением зависимой стороны в отношениях «один к одному» с ядром Entity Framework

Сообщение Anonymous »

Сейчас я работаю над проектом, использующим 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»