1. EF通過資料庫生成code first實體,資料庫中不添加外鍵關系,實體類中如何配置關聯關系
你是想資料庫不要外鍵 但是實體要導航屬性吧
需求蠻奇特的
你實體也不加導航屬性 需要關聯數據的時候用 JOIN 查詢
重新EF介面 在生成資料庫的時候 只解釋生成關系
2. .net+mvc5+oracle,使用EF自動創建資料庫表的時候,為什麼關聯表沒有自動生成
可以使用Entity Framework的Db First模式抄生襲成model。
第一步:創建
ASP .NET MVC項目
第二步:創建實體模型
在項目上右擊 添加新建項目→Ado.Net實體數據模型
如下圖所示:
第三步:與現有的資料庫進行連接生成EF實體
然後按照如下所示,選擇從資料庫生成實體數據模型【當然如果你想使用CodeFirst方式也是可以的,這是後話了】:
新建連接到現有的資料庫,如下圖所示:
點擊下一步,選擇我們要生成實體對應的表、試圖、存儲過程等,如下圖所示:
最後點擊完成,則系統幫我們生成了資料庫實體類以及EDMX的定義文件。
如圖所示:
3. 採用EF開發資料庫,前台使用jqGrid直接獲取數據。現在問題,如果有多表聯合查詢如何解決
若EF是採用代碼優先生成資料庫的話則需要修改EF中對應的Model的代碼,即info中新增一列即可,不需要改動其他內容了;
若EF是採用根據現有資料庫生成的話,需要在資料庫對應表中添加一列,再重新生成EF的代碼即可。
4. 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 }
5. EF中的code first模式 怎麼創建資料庫
方法/步驟
1
EF的Code First模式不需要我們創建什麼數據向導,直接寫代碼就行了。我們用NET最簡單的控制台應用程序來說明。如下圖所示
7
通過以上的步驟,你感覺到EF的Code First模式的魅力了沒,自動創建資料庫以及表。這也是現在應用最多的模式了,好了,這次分享就到這里。有什麼問題的話,留言咨詢即可。
6. C# ef自動生成資料庫
要把Model 轉換成SQl 資料庫 只能還原出結構出來
類似ORM Model First
找到這個類 對應的屬性 跟類名 產生對應的表名+欄位名 的SQl Creat Table 語法