Уникальное ограничение ef core для двух разных объектовC#

Место общения программистов C#
Ответить
Anonymous
 Уникальное ограничение ef core для двух разных объектов

Сообщение Anonymous »

Предположим, у меня есть 2 объекта, между ними нет связи.
Я хотел убедиться, что в базе данных у меня есть уникальные адреса, поэтому я попробовал следующее

Код: Выделить всё

public class SaleAddress : SaveConfig
{
[Key]
[Required]
public Guid SaleAddressId { get; set; }
public Guid SignatureId { get; set; }
public string Address { get; set; }
}

public class DepositAddress : SaveConfig
{

[Key]
[Required]
public Guid DepositAddressId { get; set; }
public int? Index { get; set; }
public bool Active { get; set; }
public Guid SignatureId { get; set; }
public string Address { get; set; }
}
Я создал ограничение для уникального адреса

Код: Выделить всё

modelBuilder.Entity()
.HasIndex(e => e.Address)
.IsUnique();

// Ensure Address is unique no duplicated address
modelBuilder.Entity()
.HasIndex(e => e.Address)
.IsUnique();
Можно ли также запретить использование одного и того же адреса (saleaddress) в таблице депозитных адресов и наоборот, или мне нужно вручную проверять перед вставкой
Пример. Допустим, я хочу вставить новые адреса депозитов

Код: Выделить всё

var depositAddress = new DepositAddress
{
Address = "Foo"
};
await _repository.DepositAddressesRepository.Add(depositAddress);

var depositAddress = new DepositAddress
{
Address = "Foo1"
};
await _repository.DepositAddressesRepository.Add(depositAddress);
await _repository.SaveAsync();
//выше будет указано, что "Foo" и "Foo1" уникальны.
//следующее должно вызвать исключение, поскольку уже существует "Foo1". " по адресу депозита

Код: Выделить всё

var saleAddress = new SaleAddress
{
Address = "Foo1"
};
await _repository.SaleAddressesRepository.Add(saleAddress);
await _repository.SaveAsync();
можно ли это как-то настроить в efcore или мне нужно вручную проверять перед вставкой

Подробнее здесь: https://stackoverflow.com/questions/786 ... t-entities
Ответить

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

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

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

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

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