English 中文(简体)
EF4 POCO - Updating a navigation property
原标题:

I have a Recommendation object and a FeedbackLevel object and the FeedbackLevel object is a navigation property inside a Recommendation object

Recommendation int EntityKey; FeedbackLevel Level;

Inserting a new one works just fine with AddObject(). Here s what I m trying with the update, which doesn t work.

recommendation.Level = myRepository.GetFeedbackLevel(newLevel);
_context.Recommendations.Attach(new Recommendation { EntityKey = recommendation.EntityKey });
_context.Recommendations.ApplyCurrentValues(recommendation);
_context.SaveChanges(System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave);

The code above is basically a compact version of what I have. Updating a scalar property works just fine, but I can t update a new navigation property as the avove code succeeds without any changes!

I ve also tried a few other methods like getting an existing Recommendation first and then re-assigning the FeedbackLevel to it without any luck.

UPDATE:

Here is what I captured from the sql profiler during the save call:

exec sp_executesql N update [dbo].[Recommendation]
set [FeedbackComment] = @0, [LastUpdatedDate] = @1
where ([RecommendationKey] = @2)
 ,N @0 varchar(255),@1 datetime,@2 int ,@0= This is cool ,@1= 2010-01-08 10:06:06.5400000 ,@2=11

It looks like it does not even know that the FeedbackLevel needs to be saved. How can I get it to trigger it?

问题回答

Not sure exactly what your trying to do here, but if your trying to do an update, simple way is to

1) do a, GET [entityName] by id, use include to get any child properties

2) update the attributes

3) make sure the entity state is modified

4) Save changes

By doing a GET first, you wont need to get attach it to the context before you update, as it will be already in there.





相关问题
Entity Framework with MySQL connector in c#

I have been trying to get the Entity Framework to work in my web application using MySQL. It works fine on my local pc, but doesn t work when I put it on the server. Since the server is a shared ...

How Do I Create And Update A Many To Many Relationship With EF

I am using the Entity Framework with SQL Server. I have a many to many relationship between 2 tables. I have created a join table with just the primary key fields of the 2 tables. In the designer, the ...

Entity Framework with File-Based Database

I am in the process of developing a desktop application that needs a database. The application is currently targeted to SQL Express 2005 and works wonderfully. However, I m not crazy about having ...

Linq to enties, insert foreign keys

I am using the ADO entity framework for the first time and am not sure of the best way of inserting db recored that contain foreign keys. this is the code that i am using, I would appreciate any ...

Entity Framework - Many to many question

I have a table called ASB and a table called PeopleInvolved. There is a junction table called PeopleInvolved_ASB which simply contains an ASBID and a PeopleInvolvedID column. The columns act as a ...

Post back complex object from client side

I m using ASP.NET MVC and Entity Framework. I m going to pass a complex entity to the client side and allow the user to modify it, and post it back to the controller. But I don t know how to do that ...

ADO.NET Entity Data Model are not precise enough

I run this code: var cos = from k in _db.klienci_do_trasy where k.klient_id == 5 select k; but the query send to database is: SELECT * FROM `klienci_do_trasy` LIMIT 0, 30 why is it for, there ...

热门标签