Entity Framework: Setting a Foreign Key Property

前端 未结 6 1456
暗喜
暗喜 2020-12-02 21:17

We have a table that looks roughly like this:

CREATE TABLE Lockers 
{
  UserID int NOT NULL PRIMARY KEY (foreign key),
  LockerStyleID int (foreign key),
  N         


        
相关标签:
6条回答
  • 2020-12-02 21:47

    You could make an extension method that constructs the entity based on these ID's.

    0 讨论(0)
  • 2020-12-02 21:47

    Following on from Dylan's answer, Alex James has written a blog on precisely this, explaining the problem in full and how to go about the partial class + property solution.

    Faking Foreign Keys - EF3.5

    0 讨论(0)
  • 2020-12-02 21:53

    another method if you don't mind 'polluting' you db schema is to add a computed column, e.g. if you had a foreign key field FK_Customer you could define a new computed column FK_Customer_Computed which has the expression FK_Customer. When you generate\update your edmx model the field will appear like a regular field that you can then reference from you entity object.

    Or wait for EF4 :)

    0 讨论(0)
  • 2020-12-02 21:56

    Using an EntityKey solves your problem ;)

    alk.

    0 讨论(0)
  • 2020-12-02 22:12

    This missing feature seems to annoy a lot of people.

    • Good news: MS will address the issue with .NET 4.0.
    • Bad news: for now, or if you're stuck on 3.5 you have to do a little bit of work, but it IS possible.

    You have to do it like this:

    Locker locker = new Locker();
    locker.UserReference.EntityKey = new System.Data.EntityKey("entities.User", "ID", userID);
    locker.LockerStyleReference.EntityKey = new EntityKey("entities.LockerStyle", "ID", lockerStyleID);
    locker.NameplateReference.EntityKey = new EntityKey("entities.Nameplate", "ID", nameplateID);
    entities.AddLocker(locker);
    entities.SaveChanges();
    
    0 讨论(0)
  • 2020-12-02 22:13

    What I've been doing to make things easy is adding the foreign key property myself in the partial class:

    public int UserID
    {
       get
       {
          if (this.User != null)
             return this.User.UserID;
       }
       set 
       {
          this.UserReference.EntityKey = new System.Data.EntityKey("entities.User", "ID", value);
       }
    }
    
    0 讨论(0)
提交回复
热议问题