Ограничение иностранного ключа FINE на INSERT, не удается в обновленииC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Ограничение иностранного ключа FINE на INSERT, не удается в обновлении

Сообщение Anonymous »

Я использую структуру сущности. В моей модели я сделал иностранный ключ, нулевой, и, кажется, правильно отражен в базе данных. Вот часть моего класса модели активов: < /p>

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

public class Asset
{
[Key]
public int AssetID { get; set; }

[Required]
[MaxLength(100)]
public string AssetName { get; set; }

[Required]
public int AssetTypeID { get; set; }

[ForeignKey("AssetTypeID")]
public AssetType AssetType { get; set; }

public int? SubtypeID { get; set; }

[ForeignKey("SubtypeID")]
public Subtype? Subtype { get; set; }
}
Как вы можете видеть, подтипейд и свойство навигации установлено в соответствии с нулевым, а столбец в таблице также правильно установлен. При вставке нового актива он принимает subtypeid как нулевой, однако, при обновлении уже существующего актива иметь нуль для subtypeid , я получаю следующую ошибку:

sqlexcesscept "Fk_assets_subtypes_subtypeid". Конфликт произошел в базе данных "Assetinentory", таблица "dbo.subtypes", столбец 'typeid'.

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

var updatedAsset = viewModel.Asset;

using (var scope = App.ServiceProvider.CreateScope())
{
var context = scope.ServiceProvider.GetRequiredService();

SelectedAsset.AssetName = updatedAsset.AssetName;
SelectedAsset.AssetTypeID = updatedAsset.AssetTypeID;
SelectedAsset.AssetType = updatedAsset.AssetType;

if (updatedAsset.SubtypeID == -1)
{
SelectedAsset.SubtypeID = null;
SelectedAsset.Subtype = null;
}
else
{
SelectedAsset.SubtypeID = updatedAsset.SubtypeID;
SelectedAsset.Subtype = updatedAsset.Subtype;
}

SelectedAsset.Owner = updatedAsset.Owner;
SelectedAsset.Location = updatedAsset.Location;
SelectedAsset.PurchaseDate = updatedAsset.PurchaseDate;
SelectedAsset.Value = updatedAsset.Value;
SelectedAsset.Status = updatedAsset.Status;
SelectedAsset.Description = updatedAsset.Description;

context.Assets.Update(SelectedAsset);

var log = new AssetLog
{
AssetID = SelectedAsset.AssetID,
Action = "Updated",
Timestamp = DateTime.Now,
PerformedBy = AuthenticationService.Instance.CurrentUser.GetTenantProfiles().ElementAt(0).Oid
};

context.AssetLogs.Add(log);

await context.SaveChangesAsync();
}
Исключение добавлено на SaveChangesAsync вызов метода.
Я нахожусь здесь. Я попробовал кучу вещей, которые нашел здесь, спросил Чатгпт, все. Не мог понять, почему это может произойти.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -on-update
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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