Оптимистичное исключение параллелизма на вставке, несмотря на то, что DB написан OKC#

Место общения программистов C#
Ответить
Anonymous
 Оптимистичное исключение параллелизма на вставке, несмотря на то, что DB написан OK

Сообщение Anonymous »

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

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

public override void Up() {
CreateTable("dbo.Heros",c => new {
Id = c.Int(nullable: false, identity: true),
Name = c.String(unicode: false),
Level = c.Int(nullable: false),
Exp = c.Int(nullable: false),
MaxHp = c.Int(nullable: false),
CurrentHp = c.Int(nullable: false),
Strength = c.Int(nullable: false),
Agility = c.Int(nullable: false),
Intelligence = c.Int(nullable: false),
CharType = c.String(unicode: false),
MaxActionPoints = c.Int(nullable: false),
CurrentActionPoints = c.Int(nullable: false),
Discriminator = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),
}).PrimaryKey(t => t.Id);

CreateTable("dbo.Equipment",c => new {
Id = c.Int(nullable: false, identity: true),
Name = c.String(unicode: false),
CompatibleCharacterType = c.String(unicode: false),
StrengthBonus = c.Int(nullable: false),
AgilityBonus = c.Int(nullable: false),
EnduranceBonus = c.Int(nullable: false),
IntelligenceBonus = c.Int(nullable: false),
ApToUse = c.Int(nullable: false),
Range = c.Int(nullable: false),
Target = c.Int(nullable: false),
EquipmentType = c.Int(nullable: false),
ArmorType = c.Int(),
ArmorValue = c.Int(),
Duration = c.Int(),
UseCount = c.Int(),
Discriminator = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),
AbstractCharacter_Id = c.Int(),
}).PrimaryKey(t => t.Id)
.ForeignKey("dbo.Heros", t => t.AbstractCharacter_Id)
.Index(t => t.AbstractCharacter_Id);
}
< /code>
Иностранный ключ на таблице оборудования связан со списком «оборудования» в моем коде «Герой» (Abstractcharacter). /> 
 Мой герой хранится в DB в качестве оборудования с правильным иностранным ключом. Поэтому я подумал, что это было поднято, потому что сначала было вставлено оборудование, затем герой, а затем оборудование было обновлено, чтобы установить их иностранные ключи новому вставленному герою. Поэтому я попытался использовать транзакцию, но она не изменила поведение. < /P>
public AbstractCharacter createCharacter(AbstractCharacter character) {
DbContextTransaction trans = model.Database.BeginTransaction();
model.Characters.Add(character);
model.SaveChanges(); // Always a DbUpdateException (inner exception : OptimisticConcurrencyException)
trans.Commit();
return character;
}

Кто-нибудь знает, что происходит и как это решить?

Подробнее здесь: https://stackoverflow.com/questions/797 ... written-ok
Ответить

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

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

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

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

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