KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have the following (abbreviated for clarity) - an enum, a base class with that enum, and two derived classes that set the enum to a specific value. public enum MyEnum { Value1, Value2 } public class MyBaseClass { public MyEnum { get; protected set; } } public class DerivedOne: MyBaseClass { public DerivedOne { MyEnum = MyEnum.Value1; } } public class DerivedTwo: MyBaseClass { public DerivedTwo { MyEnum = MyEnum.Value2; } } What I want to do, is have Entity Framework 5 automatically distinguish between DerivedOne and DerivedTwo, with a MyEnum value based discriminator . I should be able to do this as, by convention, every MyEnum == MyEnum.Value1 represents DerivedOne, and MyEnum == MyEnum.Value2 represents DerivedTwo. I tried this in my DbContext: public class MyDbContext : DbContext { DbSet<MyBaseClass> MyBaseClass { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<MyBaseClass>() .Map<DerivedOne>(m => m.Requires(x => x.MyEnum == MyEnum.Value1)); base.OnModelCreating(modelBuilder); } } However, this throws the following InvalidOperationException: The expression 'x => (Convert(x.MyEnum) == 0)' is not a valid property expression. The expression should represent a property (...) Edit: I believe I got a little farther using this: modelBuilder.Entity<MyBaseClass>().Map<DerivedOne>(m => m.Requires("MyEnum") .HasValue((Int32)MyEnum.Value1)); Now I get this EntityCommandCompilationException: Problem in mapping fragments starting at line (...) Condition member 'MyBaseClass.MyEnum' with a condition other than 'IsNull=False' is mapped. Either remove the condition on MyBaseClass.MyEnum or remove it from the ma
Tags (comma-separated)
Save Edits
Cancel