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

热点内容
截图保存为哪个文件夹 浏览:101
微云文件无法打开 浏览:373
越狱文件管理器哪个好用 浏览:947
桌面文件可以保存在哪里 浏览:136
世界之窗修改密码 浏览:555
系统文件巨大 浏览:138
重点毕业生数据采集有什么用 浏览:341
手机抖音上的app在哪里 浏览:215
thinkpad装win7教程 浏览:793
2012文件服务器资源管理器 浏览:459
纯净版win1032位改64 浏览:413
农产品行业融资主要分析哪些数据 浏览:601
华为微信不上网络设置 浏览:727
查看qq聊天记录 浏览:931
nih是什么意思网络用语 浏览:456
网络营销课程设计公众号论文 浏览:902
淘宝低价海关扣押苹果 浏览:335
javadouble和float 浏览:303
atmega8下载程序 浏览:819
飞鸽传输文件和qq哪个快 浏览:519

友情链接