c# - Composite Key to navigation property -


i'm trying create table holding notes specific entity. have entity called notes i'd store pk of entity referencing. i'd have composite key of key , table name containing primary key. see example below:

public class lot {     public int lotid { get; set; }     public virtual icollection<note> notes { get; set; } } public class task {     public int taskid { get; set; }     public virtual icollection<note> notes { get; set; } }  public class note {     public int id { get; set; }     public int entityreferenceid { get; set; }      public string entitytype { get; set; }     public string comment {get; set; } } 

so in notes table there be:

id: 1 entityreferenceid: 1 entitytype:lot comment: "comment one, lot one"

id: 2 entityreferenceid: 1 entitytype:lot comment: "comment two, lot one"

id: 3 entityreferenceid: 1 entitytype:task comment: "comment one, task one"

it seems should possible in database, i'm not having luck model. can point me in right direction?

make note class abstract, , create 2 derived classes, 1 lot notes, , other task notes this:

public abstract class note {     public int id { get; set; }      public string comment {get; set; } }  public class noteforlot : note {     public int lotid { get; set; }     public virtual lot lot { get; set; } }  public class notefortask : note {     public int taskid { get; set; }     public virtual task task { get; set; } } 

notice how each subclass references correct parent object.

your lot , task classes need change reflect changes:

public class lot {     public int lotid { get; set; }     public virtual icollection<noteforlot> notes { get; set; }      public lot()     {         notes = new hashset<noteforlot>();     } }  public class task {     public int taskid { get; set; }     public virtual icollection<notefortask> notes { get; set; }      public task()     {         notes = new hashset<notefortask>();     } } 

entity framework automatically create column in notes table (to replace entitytype property) distinguish between 2 kinds of notes. such column called discriminator in database.

this feature called table-per-hierarchy inheritance. can google obtain more information it.


Comments

Popular posts from this blog

java - Static nested class instance -

c# - Bluetooth LE CanUpdate Characteristic property -

JavaScript - Replace variable from string in all occurrences -