2015-03-19sql
1.當項目框架爲.Net Framework4.0的時候,使用EF6.0會出問題。數據庫
解決方法:將引用的EF相關dll改爲EF5.0的DLL。服務器
2.EF使用Model First方式創建數據庫時,發佈網站至IIS或者服務器上時,微軟會採起sql登陸驗證而採起Windows(即鏈接字符串爲Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=true; 時會出問題)框架
解決方法:將EF的鏈接字符串改成ide
1 <add name="Model1Container" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="Data Source=./;Initial Catalog=kashishop;User Id=kashishop;Password=123;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
3.使用EF,發佈網站時,要在配置文件中添加字體
1 <configSections> 2 <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 3 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 4 </configSections>
和網站
1 <entityFramework> 2 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 3 <parameters> 4 <parameter value="v11.0" /> 5 </parameters> 6 </defaultConnectionFactory> 7 </entityFramework>
2015-03-21ui
1 GoodService gs = new GoodService(); 2 Good g = gs.LoadEntities(u => u.Id == id).FirstOrDefault(); 3 g.Name = name; 4 g.Price = double.Parse(price); 5 g.Quantifier = quantifier; 6 g.Instruction = instruction; 7 g.TypeId = typeId; 8 gs.Update(g);
把Service提早,用同一個Service進行取值和更新操做就沒問題。spa
可是像下面這樣,用不一樣的Service對象對同一個實體的導航對象進行更新就會報此錯誤。code
1 Good g = new GoodService().LoadEntities(u => u.Id == id).FirstOrDefault(); 2 g.Name = name; 3 g.Price = double.Parse(price); 4 g.Quantifier = quantifier; 5 g.Instruction = instruction; 6 g.TypeId = typeId; 7 GoodService gs = new GoodService(); 8 gs.Update(g);
使用EF更新數據時,若是要更新的對象有相關的對象(換句話說,就是要更新的表有主外鍵關係,或者導航關係),這些對象必須來自同一個IEntityChangeTracker 。