A. EF通過資料庫生成code first實體,資料庫中不添加外鍵關系,實體類中如何配置關聯關系
你是想資料庫不要外鍵 但是實體要導航屬性吧
需求蠻奇特的
你實體也不加導航屬性 需要關聯數據的時候用 JOIN 查詢
重新EF介面 在生成資料庫的時候 只解釋生成關系
B. 採用EF開發資料庫,前台使用jqGrid直接獲取數據。現在問題,如果有多表聯合查詢如何解決
若EF是採用代碼優先生成資料庫的話則需要修改EF中對應的Model的代碼,即info中新增一列即可,不需要改動其他內容了;
若EF是採用根據現有資料庫生成的話,需要在資料庫對應表中添加一列,再重新生成EF的代碼即可。
C. ef code first 怎麼生成資料庫欄位說明
ef code first 怎麼生成資料庫欄位說明
At
its core, the ADO.NET Entity Framework relies on an Entity Data Model.
An EDM provides all the metadata the framework needs to translate LINQ
queries into
D. EF code first 怎樣創建資料庫視圖
1. 使用CodeFirst方式創建資料庫
我們新建一個控制台項目,項目中添加兩個Model:Author和Blog以及DbContext。 DbContext的添加方式如下:
項目上右鍵->添加->新建項->ADO.NET Entity Data Model->Empty Code First model
項目代碼如下:
1 //默認生成的數據表名為類名+字母s,這里使用TableAttribute來指定數據表名為T_Authors
2 [Table("T_Authors")]
3 public class Author
4 {
5 public int Id { set; get; }
6 public string Name { set; get; }
7 /*
8 此處定義了Blog類型的屬性,所以要確保Blog類中至少要有一個表示主鍵的欄位,即public int Id { set; get; }。
否則在生成數據表時會報錯:"EntityType 'Blog' has no key defined. Define the key for this EntityType.
9 Blogs: EntityType: EntitySet 'Blogs' is based on type 'Blog' that has no keys defined."
10 */
11 public virtual ICollection<Blog> Blogs { set; get; }
12 }
13
14 [Table("T_Blogs")]
15 public class Blog
16 {
17 public int Id { set; get; }
18 public string Title { set; get; }
19 public DateTime Time { set; get; }
20 public int AuthorId { set; get; }
21 public virtual Author Author { set; get; }
22 }
23
24 public class MyDbContext: DbContext
25 {
26 public MyDbContext()
27 : base("name=MyDbContext")
28 {
29 }
30 //DbContext會根據配置文件中connectionStrings指定的資料庫名稱來建立資料庫
31 //DbContext根據DbSet屬性的類型來創建數據表,這里指定了Author類型的屬性,所以會生成T_Authors數據表
32 public virtual DbSet<Author> Authors { set; get; }
33 }
CodeFirst方式會根據配置文件中的配置生成資料庫,這里小編使用的是MYsql資料庫,配置文件如下:
1 <!--EF for MYSQL-->
2 <entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
3 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
4 <providers>
5 <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
6 </providers>
7 </entityFramework>
8 <connectionStrings>
9 <add name="MyDbContext" connectionString="server=localhost;port=3306;database=EF;uid=root;password=root" providerName="System.Data.MySqlClient" />
10 </connectionStrings>
PS:小編使用的是EF6和MYSQL資料庫,所以要在項目中添加對Mysql.Data.Entity.EF6以及EntityFrameword 6.0的引用。
到此,我們已經完成生成資料庫的工作,接下來在Main方法中寫兩行代碼:
1 using (var db = new ManagerDb())
2 {
3 db.Authors.Add(new Author() { Name = "xfh" });
4 db.SaveChanges();
5 }
E. C# ef自動生成資料庫
要把Model 轉換成SQl 資料庫 只能還原出結構出來
類似ORM Model First
找到這個類 對應的屬性 跟類名 產生對應的表名+欄位名 的SQl Creat Table 語法
F. ef資料庫怎麼遷移到生產資料庫
update-database 加一個-script 參數, 這樣就會生成一個更新腳本, 放到伺服器上執行就可以了
不過對於數據的沖突還是要手動進行修復
比如你重新命名了一個列, 那麼要在代碼中告訴EF怎麼處理, 否則的話它生成的腳本會刪除原來的列, 然後重新建一個列,這樣數據就丟了
G. .net+mvc5+oracle,使用EF自動創建資料庫表的時候,為什麼關聯表沒有自動生成
可以使用Entity Framework的Db First模式生成model。
第一步:創建
ASP .NET MVC項目
第二步:創建實體模型
在項目上右擊 添加新建項目→Ado.Net實體數據模型
如下圖所示:
第三步:與現有的資料庫進行連接生成EF實體
然後按照如下所示,選擇從資料庫生成實體數據模型【當然如果你想使用CodeFirst方式也是可以的,這是後話了】:
新建連接到現有的資料庫,如下圖所示:
點擊下一步,選擇我們要生成實體對應的表、試圖、存儲過程等,如下圖所示:
最後點擊完成,則系統幫我們生成了資料庫實體類以及EDMX的定義文件。
如圖所示:
H. vs2015 mvc ef怎麼創建資料庫
具體的步驟有點復雜大概的步驟是
1.創建實體類
2.創建上下文類
3.去web.config設置資料庫連接字元串
4.添加配置遷移文件
5.更新配置遷移文件
6.update-database
具體的我得去看下我的文件夾,下午給你一個具體的步驟
I. c#ef能直接操作sqlite資料庫的生成嗎
下載system.data.sqlite安裝包,在system.data.sqlite.org上下載對應.NET Framework x.x版本的安裝包。安裝system.data.sqlite,按照提示一步一步執行即可。
下載SQLiteStudio,直接運行exe文件。創建資料庫,以及操作數據表等等。
環境搭建好後就開始創建C#工程了,這里舉例創建了一個Winform工程。在工程里引入system.data.sqlite.dll。注意:引用窗口打開後選擇瀏覽,在安裝目錄下找到dll。默認安裝路徑是 C:\Program Files\System.Data.SQLite\2010\bin。如果不是使用VS2010,路徑會不同
除了引用system.data.sqlite以外,還需要把SQLite.Interop.dll復制到程序根目錄。
5
至此C#操作SQLite的開發環境就搭建好了。
6
異常解決:在實際使用中遇到了Unable to open the database file異常。查找了很久原因,排除了目錄讀寫許可權,連接字元串中增加Pooling=True;Journal Mode=Off;均為解決問題。後來發現我使用的是屬性get來生產連接字元串,改為靜態成員變數就沒有問題了。這個問題還和操作系統有關,在win7上運行沒有問題,在XP和2003上運行才會出現這個問題。