0
を追加しました。エンティティのバージョンは、余分な列がほとんどない別のテーブルです。Entity Frameworkが継承を混乱させ、スーパークラスではなくサブクラスを返す
は私が
// querying table PERSON. this method should have nothing to do with PERSON_AUDIT
public Person GetPerson(int personId)
{
using (var db = new Context())
{
db.Persons.Take(5).ToList(); // queries PERSON_AUDIT table!
db.Persons.Find(personId); // EXCEPTION: "sequence contains more than one element" because it queries PERSON_AUDIT table and returns multiple
db.Persons.Where(x => x.PersonId == personId).ToList(); // queries/returns multiple PersonAudit objects
}
}
はそうワイヤがどこかで交差なっているいくつかの予期しない動作を見つけ、この
[Table("PERSON")]
class Person {...} // regular properties
[Table("PERSON_AUDIT")]
class PersonAudit : Person, IAudit { ... } // additional audit properties
public virtual DbSet<Person> Persons { get; set; }
public virtual DbSet<PersonAudit> PersonAudits { get; set; }
ようEFでそれらを定義し、すべてのクエリではなく、人のPERSON_AUDITするために外出している
後者を照会すると、PersonではないPersonAuditが返されます。 –
'PersonAudit' *は' Person'です... – aaron
PersonAuditはサブクラスであり、別のテーブルを指します。私はテーブルを照会しようとしています。 –