導航:首頁 > 編程大全 > 資料庫轉model

資料庫轉model

發布時間:2023-03-11 18:43:07

A. django使用已有的資料庫表怎麼建立model

在網上看到都是使用Django的models和makemigration,migrate命令來創建新表,並使用。可是我的數據已經存在了已經創建好,並且已經存儲有數據了,不能再重新創建新表了。了解Django的表明和models名稱的映射關系就可以讓Django使用已經存在的表。

假如在Django存在models如下:

[python]view plain

B. 如何從資料庫生成 EF Code First model

默認情況下,資料庫是創建在localhost\SQLEXPRESS伺服器上,並且默認的資料庫名為命名空間+context類名,例如我們前面的BreakAway.BreakAwayContext。

有幾種方法可以改變這種默認約定。
利用配置文件
在配置文件中新加一個連接字元串
<connectionStrings>
<add name="BreakAwayContext" providerName="System.Data.SqlClient" connectionString="Server=.\SQLEXPRESS;Database=BreakAwayConfigFile;Trusted_Connection=true" />
</connectionStrings>

注意這里連接字元串名稱和我們的context類名相同,都為BreakAwayContext。我們修改了一下默認的資料庫名,將BreakAway.BreakAwayContext
改為BreakAwayConfigFile。

我們在新增一個連接字元串
<connectionStrings>
<!--<add name="BreakAwayContext" providerName="System.Data.SqlClient" connectionString="Server=.\SQLEXPRESS;Database=BreakAwayConfigFile;Trusted_Connection=true" />-->
<add name="My_Test" providerName="System.Data.SqlClient" connectionString="Server=.;Database=MyBreakAwayDb;Trusted_Connection=true" />
</connectionStrings>

新建的連接串名稱和context類名不同了,所以我們要在BreakAwayContext的構造函數中指名連接串的名稱:

public class BreakAwayContext : DbContext
{
public BreakAwayContext():
base("name=My_Test")
{
}
}

利用DbConnection
DbContext有一個帶DbConnection重載的構造函數,說明我們也可以通過DbConnection來定位資料庫位置。我們也要先修改BreakAwayContext的構造函數:
public BreakAwayContext(DbConnection connection)
: base(connection, contextOwnsConnection: false)
{ }

調用:

static void Main(string[] args)
{
try
{
var lodging = new Lodging
{
Name = "Rainy Day Motel",
};

var resort = new Resort
{
Name = "Top Notch Resort and Spa",
MilesFromNearestAirport = 30,
Activities = "Spa, Hiking, Skiing, Ballooning",
};

var cstr = @"Server=.\SQLEXPRESS; Database=;Trusted_Connection=true";
using (var connection = new SqlConnection(cstr))
{
using (var context = new BreakAwayContext(connection))
{
context.Lodgings.Add(lodging);
context.SaveChanges();
}
}
}
catch (System.Data.Entity.Validation.DbEntityValidationException ex)
{
Console.WriteLine( " 保存失敗");
}
Console.WriteLine("OK");
Console.Read();
}

使用連接工廠控制資料庫位置
Code First的默認連接工廠是SqlConnectionFactory。此連接工廠將使用SQL Client(System.Data.SqlClient的)資料庫引擎連接到資料庫。默認的行為,將選擇在localhost\ SQLEXPRESS創建資料庫,並使用上下文類型的完全限定名作為資料庫的名稱。
我們可以通過指定的連接字元串段,來覆寫默認規則。

static void Main(string[] args)
{
try
{
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Server=.;Trusted_Connection=true");
using (var context = new BreakAwayContext())
{
context.Database.Initialize(true);
context.SaveChanges();
}
}
catch (System.Data.Entity.Validation.DbEntityValidationException ex)
{
Console.WriteLine( " 保存失敗");
}
Console.WriteLine("OK");
Console.Read();
}

PS:用這個方法好像沒辦法指定資料庫名,默認名稱為context類的完全限定名。

C. 如何從資料庫生成 EF Code First model

http://msdn.microsoft.com/en-us/gg558520

這句話很好的解釋了EDM是個啥玩意。

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

SQL commands
and materialize objects from query results. This metadata includes a
storage model (which describes a database schema), a conceptual model

(which describes entities used in the application), and the mapping between the storage and conceptual models.

1.用T4模版生成POCO Entiteshttp://blogs.msdn.com/b/adonet/archive/2010/01/25/walkthrough-poco-template-for-the-entity-framework.aspx

2.codefirst是先代碼後生成資料庫的,此文介紹了如何從資料庫生成codefirst models http://weblogs.asp.net/jgalloway/archive/2011/02/24/generating-ef-code-first-model-classes-from-an-existing-database.aspx 一下部分是原文過來的。

D. 我做開發時,習慣資料庫中每個表對應一個model類,裡面封裝各種操作,這樣做好嗎

建議你學一下hibernate
像你說的這樣估計是有多表之間的關聯,如表之間存在1對1、1對多、多對專1的關系,這時是屬用hibernate可是將所有的表封裝,在你從資料庫差出某條數據時,hibernate可以幫你查處和這條數據相關的其他表中的數據,這樣可以封裝你可能用到的所有的類,進而,表面上你只查了一次,其實hibernate幫你把潛在需要的數據也封裝了。
例如:
表A對應著類A,表B對應著類B。表A和表B之間是一對多的關系。
類A和類B將有如下關系:
class A{
Set bs = new HashSet();
A的其它屬性和方法
}
class B{
A a;
B的其它屬性和方法
}

閱讀全文

與資料庫轉model相關的資料

熱點內容
iphone4s支持的視頻解析度 瀏覽:123
wps圖表鏈接文件不可用 瀏覽:426
官方網購節什麼網站 瀏覽:635
數控車床倒角30度如何編程 瀏覽:806
預算執行數據怎麼來的 瀏覽:614
java文件同步伺服器 瀏覽:1000
截圖保存為哪個文件夾 瀏覽:101
微雲文件無法打開 瀏覽:373
越獄文件管理器哪個好用 瀏覽:947
桌面文件可以保存在哪裡 瀏覽:136
世界之窗修改密碼 瀏覽:555
系統文件巨大 瀏覽:138
重點畢業生數據採集有什麼用 瀏覽:341
手機抖音上的app在哪裡 瀏覽:215
thinkpad裝win7教程 瀏覽:793
2012文件伺服器資源管理器 瀏覽:459
純凈版win1032位改64 瀏覽:413
農產品行業融資主要分析哪些數據 瀏覽:601
華為微信不上網路設置 瀏覽:727
查看qq聊天記錄 瀏覽:931

友情鏈接