日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

配置使用EF6.0常见的一些问题及解决方案

發布時間:2024/4/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 配置使用EF6.0常见的一些问题及解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

最近做了個winform小項目,為方便快速開發,后臺框架使用了ef6.0+sqlserver2008架構,遇到各種問題,真是傷腦筋。現將遇到問題和解決方案寫下來,方便查閱

提示未注冊,找不到驅動程序

No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file.

?

這個問題比較坑,我根據上面的提示,跑到配置文件去查看,看有沒有entutyFramework節點,是否注冊驅動。結果按照網上的解決方案把配置文件貼上去了還是報錯,然后再查看EntityFramework.SqlServer.dll是否已經引用到數據訪問層類庫中,也在。這下就懵逼了,到底是什么情況,網上各種搜,比如把EntityFramework.SqlServer.dll的賦值到本地屬性設為True后還是沒有用,折騰了個把小時,最后突然看了一眼bin\Debug目錄,發現只有一個EntityFramework.dll文件,沒有EntityFramework.SqlServer.dll,我就瞬間釋然了,原來是這樣。。。

解決方案:

1.檢查是否引入EntityFramework.dll 和EntityFramework.SqlServer.dll

2.檢查是否設為復制到本地屬性為True

3.檢查配置文件是否注冊驅動

如我的是sqlserver數據庫:

<providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers>

如果是mysql

<providers><provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider></providers>

將上面這段代碼放到<entityFramework>節點下面就可以了,并且要引入幾個dll

4.查看編譯后的目錄中是否有這2個dll,如果沒有,手動拷貝進去

提示表名無效

?有時候新加了一個實體類,數據庫也相應加了一個表。然后理所當然的運行增加數據,結果就出現這提示

?排查過程

?然后又是一陣排查,再次確認了數據庫中確實存在表,還手動存進去了一條數據。再跑到BaseContext:DbContext這個類里面一陣翻,確定已經有? public DbSet<Employee>a_Emp { get; set; }這個屬性了。又跑到實體類中確認字段是否吻合,主鍵[key]標記是否已經標了。最后又對比了之前的項目2個實體之間的差別。最后終于發現。。。實體類沒有和數據庫關聯

?

解決方案

1.確認數據庫表是否存在

2.確認BaseContext:DbContext類中是否有屬性

3.確認實體類中字段與主鍵

4.確認實體與數據庫表是否關聯

?

[Table("a_Emp")]public class Employee

另:實體類上面的[table]小括號里面的就是數據庫的表名,并且該標記需要引用dll

using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema;

?數據庫字段記錄為null時 ef 操作數據庫報錯

? ?

錯誤排查

這個問題是數據庫字段為空導致的,ef 反射賦值時實體時發生的錯誤,如:ToList()、

_db.Set<TEntity>().AddRange(entry);
_db.SaveChanges();

解決方案

2種任選一種

1.將數據庫所有字段都賦值,不存在為空的情況 自然不會報錯,但畢竟繁瑣

2.將數據庫中可空字段再實體中用可空類型表示

如:

public DataTime? CreateTime{get;set;} public int? Num{get;set;} public decimal? Pirce{get;set;}

目前我知道的就這2種,應該夠用了

EF中的外鍵

?外鍵是常用的數據關聯形式,在數據訪問中占據重要位置,下面來看看使用外鍵的幾個步驟

一、將2個實體類都準備好,一個主鍵表一個外鍵表,例如 員工表中需要部門編號 那么就需要準備員工類和部門類

二、在員工實體類Employee中加入一個對象實體,加一個部門Id,沒錯,不是一個單純的部門ID 而是實體

[Key]public int EmpId { get; set; }/// <summary>/// 姓名/// </summary>public string EmpName { get; set; }/// <summary>/// 性別/// </summary>public string Sex { get; set; }/// <summary>/// 生日/// </summary>public DateTime BirthDay { get; set; }/// <summary>/// 部門/// </summary> public int DepId { get; set; }/// <summary>/// 關聯主表/// </summary>[ForeignKey("DepId")]

public Dept Dept { get; set; } //注意:ForeignKey("DepId")中的DepId 就是員工類的外鍵

四、Dept部門表中必須有主鍵

五、調用的時候

db.a_Emp.Include("Dept").Where(l => l.Dept.name.Contains(name)||string.IsNullOrEmpty(name)).ToList()

其中a_Emp是員工類的實體對象,在baseContext里面的?public DbSet<Employee>a_Emp { get; set; }

Dept.name是可以直接點出來的了

?HttpContext.User.Identity.IsAuthenticated一直為false

使用mvc時會用到權限控制,并且存cookie,然后一般會出現下面的一段代碼

protected override void OnActionExecuting(ActionExecutingContext filterContext){var request = filterContext.HttpContext.Request;var response = filterContext.HttpContext.Response;currentUser = new AdminUser();if (filterContext.HttpContext.User.Identity.IsAuthenticated){long.TryParse(System.Web.HttpContext.Current.User.Identity.Name, out userid);if (userid > 0){currentUser = AdminUserDAL.getEntryById<AdminUser, long>(userid);currentUser.allprivileges = AdminUserDAL.getUserPrivilegeAll(-1, userid);myPermissionList = currentUser.allprivileges;}}else //返回登錄頁 {response.Redirect("/Acount/Login");}

一直為false的時候就會出現始終跳到登錄頁,就算調試也找不到為什么會這樣

解決方案

? ?在webconfig文件的system.web節點下面加入節點就行了

<authentication mode="Forms"><forms loginUrl="~/Home/Login" name="paochi.com" timeout="300" protection="All" path="/" requireSSL="false" slidingExpiration="false" enableCrossAppRedirects="false" cookieless="UseCookies" /></authentication>

里面的內容可以自己根據需要配置

總結

以上是我遇到的眾多問題之一,限于篇幅和時間,暫時就記錄到這里吧。如果有什么理解錯誤的地方,還望指正!!!

請關注我的博客地址:http://www.cnblogs.com/jingch?給個贊吧!

轉載于:https://www.cnblogs.com/jingch/p/4949210.html

總結

以上是生活随笔為你收集整理的配置使用EF6.0常见的一些问题及解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产传媒一区 | 欧美三级视频在线播放 | 天天爱天天草 | 天天想你在线观看完整版电影高清 | 日韩专区中文字幕 | 老狼影院伦理片 | 亚洲精品第一 | 欧美一区二区三区久久久 | 一区二区不卡视频在线观看 | 给我看高清的视频在线观看 | 影音先锋人妻啪啪av资源网站 | 日本不卡一区二区 | 伊人tv | 日韩另类视频 | 乱淫的女高中暑假调教h | 精品人妻无码一区二区三 | 日日夜夜国产精品 | 亚洲美女一级片 | 99r在线视频 | 久久久久久亚洲 | 日韩一级二级 | 大尺度床戏揉捏胸视频 | 五月天激情影院 | 国产乱人视频 | 狠狠操很很干 | 激情内射人妻1区2区3区 | 国产一区麻豆 | tube极品少妇videos| 蜜桃一区二区 | 中文字幕日韩在线播放 | 99看片| 天堂在线视频免费 | 亚洲精品国产欧美在线观看 | 日本三级中文字幕在线观看 | 色妹子综合 | 免费的毛片视频 | 久青草视频在线观看 | 国产一区二区激情视频 | 一级特黄色片 | 成人午夜视频一区二区播放 | 中文字幕乱码亚洲精品一区 | 中国老头同性xxxxx | 91视频成人免费 | 天天插天天射天天干 | 免费观看成人鲁鲁鲁鲁鲁视频 | 亚洲三级免费观看 | 国产精品制服丝袜 | 性欧美bb | 亚洲不卡视频在线 | 一级片一级 | 毛片大全| 四虎成人精品在永久免费 | 阿v免费在线观看 | 国产一区毛片 | 国产在线三区 | 蜜臀av免费在线观看 | 噜噜色成人 | 丰满少妇麻豆av苏语棠 | 哺乳期喷奶水丰满少妇 | 欧美八区| 丰满av| 欧美绿帽交换xxx | 97视频在线观看免费高清完整版在线观看 | 亚洲精品综合久久 | 中日韩免费毛片 | 国产精品视频麻豆 | 亚洲精品久久久久久久久 | 青青青青青操 | 欧美激情一区二区三区p站 欧美mv日韩mv国产网站app | 亚洲一区二区三区高清在线 | 禁果av一区二区三区 | 不卡av在线播放 | 亚洲婷婷在线观看 | 欧美在线www | 日本三级视频在线观看 | 天天做夜夜做 | 人妻精品一区二区三区 | 成人av教育 | 色婷婷社区 | 精品无码人妻一区 | 北条麻纪在线观看aⅴ | 亚洲精品一区二区三区蜜桃 | 高清av在线 | 久久伊人精品 | 国产精品美女www爽爽爽视频 | 亚洲精品国产精品乱码视色 | 久草视频资源 | 欧美顶级metart裸体全部自慰 | 国产精品久久免费 | 韩国日本在线 | 一本之道av| 成熟丰满熟妇高潮xxxxx视频 | 亚洲免费在线观看 | 国产一区不卡在线观看 | 亚洲高清视频网站 | 久久久影视 | 99久久人妻无码中文字幕系列 | 国产一区美女 | 亚洲精品无人区 |