导航:首页 > 编程大全 > 数据库转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相关的资料

热点内容
javavoid参数 浏览:829
如何让编程具有记忆功能 浏览:435
javamail发送带附件的邮件 浏览:173
微信分享文件到其他软件 浏览:682
微信对话文件夹在哪 浏览:287
qq头像欧美范街头男生 浏览:321
毛孔app 浏览:880
照片级渲染教程 浏览:304
目录中的文件夹有什么用 浏览:177
车载u盘文件扫描 浏览:410
稻壳文档怎样改文件名 浏览:620
cad怎么把文件存成模板 浏览:250
编程设计用什么笔记本流畅 浏览:584
电脑突然打开文件很慢 浏览:501
数据线一般是多少瓦的 浏览:314
javawebjsp简单项目实例 浏览:930
u盘lost文件夹删除不了 浏览:754
工具使用如何帮助提升工作效率 浏览:773
什么叫解压缩下载的文件 浏览:703
js监听浏览器窗口移动 浏览:225

友情链接