Вот сгенерированный код на основе моей модели, который генерирует таблицы:
Код: Выделить всё
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);
}
В моем коде я создаю Hero и добавляю ему недавно созданное снаряжение.
Когда я пытаюсь сохранить героя, добавляю его в DbSet DbContext, а затем сохраняю DbContext с вызовом SaveChanges(), я получил 2 результата:
- Мой герой хранится в базе данных, а также его оборудование с правильным внешним ключом
- Выдается исключение OptimisticConcurrencyException
Код: Выделить всё
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
Мобильная версия