关于Linq入门(连接数据库)的疑问

小_虎 2009-09-21 05:09:54
using System;
using System.Data.SqlClient;
using System.Linq;
using System.Data.Linq;
using System.IO;

class TestBoxing
{
static void Main()
{
string userTempFolder = Environment.GetEnvironmentVariable("SystemDrive") + @"\YJingLee";
string userMDF = System.IO.Path.Combine(userTempFolder, @"NewCreateDB.mdf");
string connStr = String.Format(@"Data Source=hm;AttachDbFilename={0};User ID=sa;pwd=sa;", userMDF);
DataContext db = new DataContext(connStr);
//string strConn = @"Data Source=hm;Initial Catalog=Test;User ID=sa;pwd=sa";
//DataContext db = new DataContext(strConn);

if (db.DatabaseExists() == true)
{
Console.WriteLine(db.Connection.Database + "数据库已经存在。");
}
else
{
Console.WriteLine(db.Connection.Database + "数据库不存在。");
db.CreateDatabase();

}
Console.ReadLine();
}
}



问题1:当我用这样的方式的时候
userMDF="C:\YJingLee\NewCreateDB.mdf";
而这个数据库是米有的,
执行到
db.CreateDatabase()方法的时候会出现这样的错误
无法创建数据库,原因是数据上下文“DataContext”没有任何表。
这哪里的问题?

问题2:当我连接方法写成这样的时候:

string strConn = @"Data Source=hm;Initial Catalog=Test;User ID=sa;pwd=sa";
DataContext db = new DataContext(strConn);

当然也是这个问题,但是我想问的是,这两种连接字符串有什么区别?

你看的第一种,他加绝对路径干什么?
有什么用,啥意思。

你看第二种,他不加绝对路径,而且如果这个“Initial Catalog=Test”,写成在我服务器上有的数据库的话。

他会提示:数据库已经存在

说明能检测到。数据库。

--------------------
反正就是想问这么搞个连接数据库的字符串。
给我链接,或给我解惑下。Thanks。
...全文
909 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimtom 2012-02-06
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 jimtom 的回复:]
sdf sdf[/Quote]
jimtom 2012-02-06
  • 打赏
  • 举报
回复
[color=#99CC00][/color]fcgdf
jimtom 2012-02-06
  • 打赏
  • 举报
回复
yuan_kang 2010-03-30
  • 打赏
  • 举报
回复
学习当中!
琥珀明月 2009-09-22
  • 打赏
  • 举报
回复
路过的,学习一下~
V68V6 2009-09-22
  • 打赏
  • 举报
回复
V68V6 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 jxyxhz 的回复:]
哈哈,总于等来了。

虽然还有点迷糊,到底有点踏实了。。
[/Quote]

开玩笑,sp1234要是不来,那我前面的研究岂不是白费了。。。。
唉,还好来了。我也是一头汗啦。
回去消化消化吧
打个盹,准备干活咯。
小_虎 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 sp1234 的回复:]
不过我还是那句话,对于SQL Server,还是另外自己写一个反射程序来自动创建吧,
[/Quote]

谁能再深入的讲讲这个问题。。。
小_虎 2009-09-22
  • 打赏
  • 举报
回复
哈哈,总于等来了。

虽然还有点迷糊,到底有点踏实了。。
V68V6 2009-09-22
  • 打赏
  • 举报
回复

sp1234对待自己的fans,从来都是热情洋溢而又充满耐心的。
  • 打赏
  • 举报
回复
new MyDB().CreateDatabase(connectionString); --> new MyDB(connectionString).CreateDatabase();
  • 打赏
  • 举报
回复
例如我写
public class MyDB : DataContext
{
public Table<Passport> PassportTable;
public Table<User> UserTable;
public Table<GroupBase> GroupBaseTable;
public Table<SysLog> SysLogTable;
public Table<Message> t6;
}


这样大概语句
new MyDB().CreateDatabase(connectionString);
就可以创建数据库了。

不过我还是那句话,对于SQL Server,还是另外自己写一个反射程序来自动创建吧,也当练练手。.net的功能不太灵活和全面。
  • 打赏
  • 举报
回复
Sorry,中间回复没有看,可能以下回复会跟楼上重复。

1. 不是什么DataContext都可以CreateDatabase。Linq to SQL的CreateDatabase方法,需要你自己定义一个从DataContext继承的类型,然后自己写一些类型为 Table<T> 的属性或者field,再执行这个自定一个类的对象的CreateDatabase方法,Linq to SQL才会反射它自己的属性和field,来创建表。

不过通常不需要这个东西。因为在你实际不断重构、修改系统设计时,真正需要的是自动更新表定义,而不是简单地创建表定义。所以Linq to SQL的这个功能是个噱头。

2. Linq to SQL实际上可以针对Sql Server Compact数据库和Sql Server数据库两种来操作。直接对文件进行操作的那个,是前者,它的好处是部署方便(不需要安装Sql Server服务),只要拷贝文件就可以了。你给出的两个分别是两类数据库的操作,虽然他们很像。
zuoming120 2009-09-22
  • 打赏
  • 举报
回复
先学习
小_虎 2009-09-22
  • 打赏
  • 举报
回复
up
V68V6 2009-09-22
  • 打赏
  • 举报
回复
不可没有激情
小_虎 2009-09-22
  • 打赏
  • 举报
回复
up
V68V6 2009-09-21
  • 打赏
  • 举报
回复
呵呵。。。
今天sp1234在线时间够长了,可能晚上出去消遣去了。
待会见他喝醉了,千万不要问他吃没吃晚饭。
十八道胡同 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 v68v6 的回复:]
引用 15 楼 jxyxhz 的回复:
他不是我的好友


你又没申请做吴哥好友,难不成还要吴哥反过来申请做你好友么?
明显这个菜鸟是指代想加老吴当好友的那些刚入门的技术人员,又不是指你。

ps:教你一个诀窍,先把帖子编辑好,然后等sp1234出没频繁的那段时间,把帖子给发出来(或者顶起来)。据我不完全统计,没有意外一般sp1234会在中午饭前一小时和饭后一小时频繁出没。另外,就是晚上十点钟之后。这样他肯定看得到,至于赏不赏脸那老哥我就不做结论了。
[/Quote]
赶紧顶上去。。离他出没时间还有1小时..
V68V6 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 jxyxhz 的回复:]
他不是我的好友
[/Quote]

你又没申请做吴哥好友,难不成还要吴哥反过来申请做你好友么?
明显这个菜鸟是指代想加老吴当好友的那些刚入门的技术人员,又不是指你。

ps:教你一个诀窍,先把帖子编辑好,然后等sp1234出没频繁的那段时间,把帖子给发出来(或者顶起来)。据我不完全统计,没有意外一般sp1234会在中午饭前一小时和饭后一小时频繁出没。另外,就是晚上十点钟之后。这样他肯定看得到,至于赏不赏脸那老哥我就不做结论了。
加载更多回复(15)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧