代码之家  ›  专栏  ›  技术社区  ›  James Helms

从触发器更新的LINQ到SQL实体

  •  0
  • James Helms  · 技术社区  · 16 年前

    我有一张叫地址的桌子。我有一个insert触发器,它对地址进行一些空间计算,以确定它所处的邻域边界。

    address = new Address
                {
    
                    Street = this.Street,
                    City = this.City,
                    State = this.State,
                    ZipCode = this.ZipCode,
                    latitude = this.Latitude,
                    longitude = this.Longitude,
                    YearBuilt = this.YearBuilt,
                    LotSize = this.LotSize,
                    FinishedSize = this.FinishedSize,
                    Bedrooms = this.Bedrooms,
                    Bathrooms = this.Bathrooms,
                    UseCode = this.UseCode,
                    HOA = this.HOA,
                    UpdateDate = DateTime.Now
    
                };
    
                db.AddToAddresses(address);
                db.SaveChanges();
    

    在数据库中,我可以清楚地看到触发器运行并更新了行的地址表中的邻居id。我试图重新加载该记录以获取分配的ID,如下所示:

    address = (from a in db.Addresses where a.AddressID == address.AddressID select a).First();
    

    在调试器中,我可以清楚地看到address.addressid是正确的,实体不会在内存中更新。 有办法解决这个问题吗?

    1 回复  |  直到 16 年前
        1
  •  0
  •   James Helms    16 年前

    我补充说

    db.Refresh(System.Data.Objects.RefreshMode.StoreWins, address);
    

    就在之前

    address = (from a in db.Addresses where a.AddressID == address.AddressID select a).First();
    

    这解决了我的问题。