Я пытаюсь понять, что происходит, когда фреймворк Entity хранит отношение от одного ко многим.
Вот сгенерированный код, основанный на моей модели, который генерирует таблицы: < /p>
Я пытаюсь понять, что происходит, когда фреймворк Entity хранит отношение от одного ко многим. Вот сгенерированный код, основанный на моей модели, который генерирует таблицы: < /p> [code]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; }
[/code] Кто-нибудь знает, что происходит и как это решить?