w*********r 发帖数: 73 | 1 现在有一个类 Student,其成员为
Student
{
ID,
Name,
Year,
Email,
Phone
}
程序从用户界面或者别的地方读取信息,生成一个一个的Student的实例。现在要把这
些Student的实例存到数据库里面,我用的方法是写SQL语句,SELECT/INSERT/UPDATE等
等。
请问,有没有什么现成的Adapter或者辅助类,传入一个Student的Object,Adapter自
己去操作数据库?不需要我自己写SELECT/INSERT/UPDATE等SQL语句?
谢谢。 |
c**t 发帖数: 2744 | 2 do you know data adapter?
【在 w*********r 的大作中提到】 : 现在有一个类 Student,其成员为 : Student : { : ID, : Name, : Year, : Email, : Phone : } : 程序从用户界面或者别的地方读取信息,生成一个一个的Student的实例。现在要把这
|
w*********r 发帖数: 73 | 3 能否详细说说?
我只知道Data Adapter这个东西,具体该什么时候用,怎么用,不清楚。
【在 c**t 的大作中提到】 : do you know data adapter?
|
s***o 发帖数: 2191 | 4 I wonder if Entity framework provides similar features, unfortunately I don'
t know much about it yet.
Other than that, I don't think there is a "direct" way to load your class ob
ject into a database.
For a single record, executing your SQL through SqlCommand probably is the
simplest. With the help of a light-weight SqlHelper class, you can get it do
ne in a few lines.
If it's a batch operation, you may want to convert your collection into a da
tatable and use SqlDataAdapter's Update method.
If it's all about insertions, SqlBulkCopy is the most efficient way.
just my two cents
【在 w*********r 的大作中提到】 : 现在有一个类 Student,其成员为 : Student : { : ID, : Name, : Year, : Email, : Phone : } : 程序从用户界面或者别的地方读取信息,生成一个一个的Student的实例。现在要把这
|
f*********9 发帖数: 718 | 5 Entity Framework
Subsonic
CSLA
etc.
这些都可以做OR mapping
Entity Framework (4.0) 感觉最好, 如果在数据库里面把表, Prime key/Foreign key
都设计好了. CRUD/navigation 都很容易.
【在 w*********r 的大作中提到】 : 现在有一个类 Student,其成员为 : Student : { : ID, : Name, : Year, : Email, : Phone : } : 程序从用户界面或者别的地方读取信息,生成一个一个的Student的实例。现在要把这
|
o****e 发帖数: 916 | 6 linq to sql 最简单,最容易上手
visual studio里连上数据库,建一个新的dbml,把table拖拉过来,然后就可以直接
code了,数据结构都是strong typed |
a***x 发帖数: 26368 | 7 记着千万不要搞任何fancy的东东
【在 o****e 的大作中提到】 : linq to sql 最简单,最容易上手 : visual studio里连上数据库,建一个新的dbml,把table拖拉过来,然后就可以直接 : code了,数据结构都是strong typed
|
f*********9 发帖数: 718 | 8 请定义一下fancy.
linq 用得好的话, 一行代码,可以顶5-10行代码。 而且很容易读懂代码。
用抽象度更高的语言, 开发软件是个趋势。
总不成用汇编和c 做此类的系统吧.
【在 a***x 的大作中提到】 : 记着千万不要搞任何fancy的东东
|
a***x 发帖数: 26368 | 9 read only, without in clause, no recursive codes.
就是不用脑子的简单sql
【在 f*********9 的大作中提到】 : 请定义一下fancy. : linq 用得好的话, 一行代码,可以顶5-10行代码。 而且很容易读懂代码。 : 用抽象度更高的语言, 开发软件是个趋势。 : 总不成用汇编和c 做此类的系统吧.
|
o****e 发帖数: 916 | 10 linq 的局限性确实是比较明显的。但对一般应用,上手快就行,做做prototype,把有
限的时间更多的花在构架之类的地方,而不是折腾很难debug的sql command。优化是以
后的事,把一个linq to sql query 替换成stored proc也就是几行代码的事,当然前
提是数据结构要清楚,data model要简洁。 |
|
|
f*********9 发帖数: 718 | 11 能不能详细说说 linq 的局限性.
【在 o****e 的大作中提到】 : linq 的局限性确实是比较明显的。但对一般应用,上手快就行,做做prototype,把有 : 限的时间更多的花在构架之类的地方,而不是折腾很难debug的sql command。优化是以 : 后的事,把一个linq to sql query 替换成stored proc也就是几行代码的事,当然前 : 提是数据结构要清楚,data model要简洁。
|
f*********9 发帖数: 718 | 12 同意. 可是实施难, 搞个比较强的dba, 给你写一大些的store procedure. 再加上
function.把database layer 搞得其胖无比. 费好多口水, 都不一定能统一看法,不影
响积极性.
【在 a***x 的大作中提到】 : read only, without in clause, no recursive codes. : 就是不用脑子的简单sql
|
p**********a 发帖数: 158 | 13 Entity Framework 是垃圾中的垃圾. 小规模用用还勉强, 结构复杂了完全是灾难. |
b******n 发帖数: 592 | 14 I think it is C# efforts to catch up with Hibernation, Python's SQL objects.
In big projects, complicated models, everything will look like disaster
anyway,
I don't think this will be the cause of it.
【在 p**********a 的大作中提到】 : Entity Framework 是垃圾中的垃圾. 小规模用用还勉强, 结构复杂了完全是灾难.
|
i***c 发帖数: 301 | |
f*********9 发帖数: 718 | 16 为什么是垃圾中的垃圾呢?
结构复杂了怎么是灾难? 性能速度太差了? 还是几百个表放在一个edmx 要用放大镜才
能看清楚?
给个具体的理由好不好?
【在 p**********a 的大作中提到】 : Entity Framework 是垃圾中的垃圾. 小规模用用还勉强, 结构复杂了完全是灾难.
|
p**********a 发帖数: 158 | 17 太多了. 因为公司总是要求用自己的产品,所以我小一直深受其害.
几个最简单的, cascade delete 经常出错, change tracking 经常出错, abstract
class
以及子类 FK reference 乱连, 更新以后不会自动 delete, 等等等等.
另外不要跟 PEM Validation 一起用...
【在 f*********9 的大作中提到】 : 为什么是垃圾中的垃圾呢? : 结构复杂了怎么是灾难? 性能速度太差了? 还是几百个表放在一个edmx 要用放大镜才 : 能看清楚? : 给个具体的理由好不好?
|
c***n 发帖数: 809 | 18 hibernate.net
【在 w*********r 的大作中提到】 : 现在有一个类 Student,其成员为 : Student : { : ID, : Name, : Year, : Email, : Phone : } : 程序从用户界面或者别的地方读取信息,生成一个一个的Student的实例。现在要把这
|
b******g 发帖数: 81 | 19 How about inheriting class? I have sub/derived classes to persist. e.g.
People(base) -> Student(derived). I have People table, I want the derived
class be saved to People table as well.
Would any of these tools be able to handle that?
key
【在 f*********9 的大作中提到】 : Entity Framework : Subsonic : CSLA : etc. : 这些都可以做OR mapping : Entity Framework (4.0) 感觉最好, 如果在数据库里面把表, Prime key/Foreign key : 都设计好了. CRUD/navigation 都很容易.
|
f*********9 发帖数: 718 | 20 没有听说过专用工具做这个的。 回头一定找找相关的资料。
下面这个连接是讲:在EF里面, 如何实施继承的。
http://mosesofegypt.net/post/Inheritance-and-Associations-with-Entity-Framework-Part-1.aspx
但是我个人不喜欢这个方式。
关系数据库嘛, 关系是强项. 你说这个例子, 我会这样做:
1.定义people id 为主键, 放在student 表里.
2. 在数据模型定义一个1对1的关系 People -> Student
这样在student, people 都各会产生一个浏览属性(navigation property).
浏览很容易, 但是问题是:有可能要更新2次.
navigation 是ef 的强项.
【在 b******g 的大作中提到】 : How about inheriting class? I have sub/derived classes to persist. e.g. : People(base) -> Student(derived). I have People table, I want the derived : class be saved to People table as well. : Would any of these tools be able to handle that? : : key
|
|
|
b******g 发帖数: 81 | 21 Thanks for the feedback! Looks good with the link you provided.
I have a follow up question:
if later I have any change in the Person table (adding another column), and
I need to update Person(base) class. Will EF be flexible enough to update
all the sub/derived classes?
【在 f*********9 的大作中提到】 : 没有听说过专用工具做这个的。 回头一定找找相关的资料。 : 下面这个连接是讲:在EF里面, 如何实施继承的。 : http://mosesofegypt.net/post/Inheritance-and-Associations-with-Entity-Framework-Part-1.aspx : 但是我个人不喜欢这个方式。 : 关系数据库嘛, 关系是强项. 你说这个例子, 我会这样做: : 1.定义people id 为主键, 放在student 表里. : 2. 在数据模型定义一个1对1的关系 People -> Student : 这样在student, people 都各会产生一个浏览属性(navigation property). : 浏览很容易, 但是问题是:有可能要更新2次. : navigation 是ef 的强项.
|
b**********s 发帖数: 40 | 22 没问题,EF可以双向更新。我觉的EF很好用,foreign key support使写linq query的
速度大大增加,还可以dynamic build linq query.个人认为还守着sql statement不放
的人是懒得学LINQ,不喜欢与时俱进。个人浅见。 |
D*******a 发帖数: 3688 | 23 如果要insert大量object,又不能立刻savechanges,可能会内存不够
【在 b**********s 的大作中提到】 : 没问题,EF可以双向更新。我觉的EF很好用,foreign key support使写linq query的 : 速度大大增加,还可以dynamic build linq query.个人认为还守着sql statement不放 : 的人是懒得学LINQ,不喜欢与时俱进。个人浅见。
|
f*********9 发帖数: 718 | 24 没有问题, EF 能自动监测, 数据库scehma 变化. 你可以打开edmx 文件,然后right-click for context menu to update.
and
【在 b******g 的大作中提到】 : Thanks for the feedback! Looks good with the link you provided. : I have a follow up question: : if later I have any change in the Person table (adding another column), and : I need to update Person(base) class. Will EF be flexible enough to update : all the sub/derived classes?
|
S***k 发帖数: 370 | 25 Linq 不能同 EF 简单划等号。不用EF也一样可以用linq.linq to dataset, linq to
xml 也是linq。
EF的缺点还是很明显的。前面提到的delete的问题,还有内存不够的问题我都遇到过。
个人认为在做架构的时候还要注意EF并不能完全支持sql server 的特性。一个简单的
例子,你可以试试建 EF 到adventureworks2008。product.document 那个table就没法
加进去,因为EF不支持HierarchyID。adventureworks2008是微软的sample DB,结构已
经算简单的了。如果database已经存在若干年,不是就着EF设计的,还是慎用EF。
做database的不喜欢EF,个人认为是因为有些人写EF linq query根本就不顾及到了
database变成了什么样的sql query。一旦有了一个query整个大table的过来,
db admin 没有办法马上解决,只能返回给程序员重写,重compile。其间的扯皮就不必
说了。我遇到过的最糟糕的一次,是先写好sql query, 由director坐在某程序员旁边
监督, 让该人写一个能翻译成写好sql query 的 EF linq query。
sql statement 是db programming的根本。为linq 而放弃sql query 恐怕是舍本逐末。
【在 b**********s 的大作中提到】 : 没问题,EF可以双向更新。我觉的EF很好用,foreign key support使写linq query的 : 速度大大增加,还可以dynamic build linq query.个人认为还守着sql statement不放 : 的人是懒得学LINQ,不喜欢与时俱进。个人浅见。
|
k**0 发帖数: 19737 | 26 re this
【在 S***k 的大作中提到】 : Linq 不能同 EF 简单划等号。不用EF也一样可以用linq.linq to dataset, linq to : xml 也是linq。 : EF的缺点还是很明显的。前面提到的delete的问题,还有内存不够的问题我都遇到过。 : 个人认为在做架构的时候还要注意EF并不能完全支持sql server 的特性。一个简单的 : 例子,你可以试试建 EF 到adventureworks2008。product.document 那个table就没法 : 加进去,因为EF不支持HierarchyID。adventureworks2008是微软的sample DB,结构已 : 经算简单的了。如果database已经存在若干年,不是就着EF设计的,还是慎用EF。 : 做database的不喜欢EF,个人认为是因为有些人写EF linq query根本就不顾及到了 : database变成了什么样的sql query。一旦有了一个query整个大table的过来, : db admin 没有办法马上解决,只能返回给程序员重写,重compile。其间的扯皮就不必
|
f*********9 发帖数: 718 | 27 我们是这样解决这个问题的:
- dba 负责所有复杂的数据查询(query)。
- 把dba写好的store procedure,引入EF(Import function),映射到同一entity上面
这样就2个层之间职责就界定的很清楚了。
EF有很多的问题(BUG)和设计缺陷,我自己遇到大约有7-8个。可是个人还是觉得EF是OR
mapping
中最喜欢的。
jquery 好吧,可是上次我看还有几百个bug等着。
能不能系统的谈谈怎样合理运用ef?或者推荐一个OR mapping工具,或OR mapping主意
多谢交流
做database的不喜欢EF,个人认为是因为有些人写EF linq query根本就不顾及到了
database变成了什么样的sql query。一旦有了一个query整个大table的过来,
db admin 没有办法马上解决,只能返回给程序员重写,重compile。其间的扯皮就不必
说了。我遇到过的最糟糕的一次,是先写好sql query, 由director坐在某程序员旁边
监督, 让该人写一个能翻译成写好sql query 的 EF linq query。
【在 S***k 的大作中提到】 : Linq 不能同 EF 简单划等号。不用EF也一样可以用linq.linq to dataset, linq to : xml 也是linq。 : EF的缺点还是很明显的。前面提到的delete的问题,还有内存不够的问题我都遇到过。 : 个人认为在做架构的时候还要注意EF并不能完全支持sql server 的特性。一个简单的 : 例子,你可以试试建 EF 到adventureworks2008。product.document 那个table就没法 : 加进去,因为EF不支持HierarchyID。adventureworks2008是微软的sample DB,结构已 : 经算简单的了。如果database已经存在若干年,不是就着EF设计的,还是慎用EF。 : 做database的不喜欢EF,个人认为是因为有些人写EF linq query根本就不顾及到了 : database变成了什么样的sql query。一旦有了一个query整个大table的过来, : db admin 没有办法马上解决,只能返回给程序员重写,重compile。其间的扯皮就不必
|
b******g 发帖数: 81 | 28 What if I need to pull a list of Students(say 10000s), modify some of the
student information, then save. Would there be any performance issue with
Entity Framework?
【在 D*******a 的大作中提到】 : 如果要insert大量object,又不能立刻savechanges,可能会内存不够
|
b******g 发帖数: 81 | 29 I like this resolution better.
上面
OR
【在 f*********9 的大作中提到】 : 我们是这样解决这个问题的: : - dba 负责所有复杂的数据查询(query)。 : - 把dba写好的store procedure,引入EF(Import function),映射到同一entity上面 : 这样就2个层之间职责就界定的很清楚了。 : EF有很多的问题(BUG)和设计缺陷,我自己遇到大约有7-8个。可是个人还是觉得EF是OR : mapping : 中最喜欢的。 : jquery 好吧,可是上次我看还有几百个bug等着。 : 能不能系统的谈谈怎样合理运用ef?或者推荐一个OR mapping工具,或OR mapping主意 : 多谢交流
|
S***k 发帖数: 370 | 30 EF最让我动心的就是linq query可以解决以前不得不用dynamic sql的情形。如果EF只
用来省下写SP entity的时间,用不用EF也无大所谓了。架一个database access layer
也不是一件为难的事。
至于jquery,我只在web site UI里用过。It连OR mapping 都能做,果真快成妖了。
我对OR mapping 工具没什么研究,合用就好。我们自己开发过针对我们自己DB的
mapping tool,结果大家觉得还是不如直接用adapter架database access layer用得方
便。对EF我的原则是只在独立的辅助性的application中用,就算出了问题,也不会影
响太大。
上面
OR
【在 f*********9 的大作中提到】 : 我们是这样解决这个问题的: : - dba 负责所有复杂的数据查询(query)。 : - 把dba写好的store procedure,引入EF(Import function),映射到同一entity上面 : 这样就2个层之间职责就界定的很清楚了。 : EF有很多的问题(BUG)和设计缺陷,我自己遇到大约有7-8个。可是个人还是觉得EF是OR : mapping : 中最喜欢的。 : jquery 好吧,可是上次我看还有几百个bug等着。 : 能不能系统的谈谈怎样合理运用ef?或者推荐一个OR mapping工具,或OR mapping主意 : 多谢交流
|
|
|
f*********9 发帖数: 718 | 31 谢谢交流
layer
【在 S***k 的大作中提到】 : EF最让我动心的就是linq query可以解决以前不得不用dynamic sql的情形。如果EF只 : 用来省下写SP entity的时间,用不用EF也无大所谓了。架一个database access layer : 也不是一件为难的事。 : 至于jquery,我只在web site UI里用过。It连OR mapping 都能做,果真快成妖了。 : 我对OR mapping 工具没什么研究,合用就好。我们自己开发过针对我们自己DB的 : mapping tool,结果大家觉得还是不如直接用adapter架database access layer用得方 : 便。对EF我的原则是只在独立的辅助性的application中用,就算出了问题,也不会影 : 响太大。 : : 上面
|
D*******a 发帖数: 3688 | 32 10000个还好
【在 b******g 的大作中提到】 : What if I need to pull a list of Students(say 10000s), modify some of the : student information, then save. Would there be any performance issue with : Entity Framework?
|
c***n 发帖数: 809 | 33 不是说了hibernate,你要把table mapping 成object, hibernate是比较好的一个.
derived
【在 b******g 的大作中提到】 : How about inheriting class? I have sub/derived classes to persist. e.g. : People(base) -> Student(derived). I have People table, I want the derived : class be saved to People table as well. : Would any of these tools be able to handle that? : : key
|
b******g 发帖数: 81 | 34 Dude.
I've used NHibernate - frankly I don't I like it very much. I don't feel
like writing xml. I've even tried Fluent NHibernate - to get around the xml
writing, if you would like to recommend that. I don't like Fluent NHibernate
either.
I don't know how you value Hibernate better than others. To me it is not
very user-friendly to developers.
【在 c***n 的大作中提到】 : 不是说了hibernate,你要把table mapping 成object, hibernate是比较好的一个. : : derived
|
c***n 发帖数: 809 | 35 you don't like the xml part? so you would like something like annotation?
xml
NHibernate
【在 b******g 的大作中提到】 : Dude. : I've used NHibernate - frankly I don't I like it very much. I don't feel : like writing xml. I've even tried Fluent NHibernate - to get around the xml : writing, if you would like to recommend that. I don't like Fluent NHibernate : either. : I don't know how you value Hibernate better than others. To me it is not : very user-friendly to developers.
|
b******g 发帖数: 81 | 36 Are you talking about C# or Java?
【在 c***n 的大作中提到】 : you don't like the xml part? so you would like something like annotation? : : xml : NHibernate
|