Ես փորձում եմ բազային օբյեկտը փոխանցել ստացված դասի օբյեկտին՝ օգտագործելով Entity Framework:
Ես փորձեցի օգտագործել պատճենի կոնստրուկտորը: Կոնստրուկտորն ինքնին աշխատում է, բայց շրջանակը սխալներ է թույլ տալիս:
Մոդելների դասեր.
public class Member
{
[Key]
public string SRU { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public virtual Address Address { get; set; }
}
public class Player : Member
{
public virtual PlayerPosition Position { get; set; }
public virtual Doctor Doctor { get; set; }
public virtual HealthIssue HealthIssue { get; set; }
public Player()
{
}
public Player(Member m)
{
SRU = m.SRU;
Name = m.Name;
Email = m.Email;
Address = m.Address;
}
}
Իմ փորձը.
DatabaseModel db = new DatabaseModel();
var val = db.Members
.FirstOrDefault(b => b.Name == "Frank");
val = new Player(val);
db.Members.Update(val);
// Save changes in database
db.SaveChanges();
Ես ակնկալում էի թարմացնել այս նյութը, բայց այն սխալ է թույլ տալիս.
System.InvalidOperationException. «Նվագարկիչ» տեսակի օբյեկտի օրինակը չի կարող հետագծվել, քանի որ {'SRU'}-ի համար նույն բանալի արժեքով մեկ այլ օրինակ արդեն հետագծվում է:
Գոյություն ունեցող սուբյեկտները կցելիս համոզվեք, որ կցված է տվյալ հիմնական արժեքով միայն մեկ միավոր:
Խմբագրել:
Փորձեցի, բայց անունը փոխեցի, բայց տեսակը դեռ նույնն է:
DatabaseModel db = new DatabaseModel();
var val = db.Members
.FirstOrDefault(b => b.Name == "Yordan");
db.Entry(val).State = EntityState.Detached;
var val2 = new Player(val);
val2.Name = "Frank";
db.Members.Update(val2);
db.SaveChanges();
Այսպիսով, ես ստացա Անդամը և Խաղացողը երկարացնում են անդամները: Այդ դեպքում ես ուզում եմ անդամին փոխանցել Player-ին:
player
տեսակը: 10.04.2019