.NET、C#、LINQ、SQL 和 OR-Mapping - 我就是不明白 :(
Posted
技术标签:
【中文标题】.NET、C#、LINQ、SQL 和 OR-Mapping - 我就是不明白 :(【英文标题】:.NET, C#, LINQ, SQL and OR-Mapping - I just don't get it :( 【发布时间】:2010-12-16 18:16:48 【问题描述】:我只是不明白,我什至不确定我是否在寻找正确的方向......
问题:
这就是我的 C# 应用程序。我通过 SSH 连接到在线 mysql 数据库。现在,我可以使用 MySQL Connector/.Net 驱动程序 (http://dev.mysql.com/downloads/connector/net/5.2.html) 在其上运行 query-stuff。一切正常。
现在我想要一些 OR-Mapping:我想要在本地实体上运行查询。
例如:在线数据库中有'order'表,它有'order_total'和'order_date'属性。
现在我运行“SELECT * FROM order”
接下来是什么?如何将此结果转换为实体,然后在修改后将更改写回?到目前为止,我所能找到的只是,这与 LINQ 和(也许)XML 有关系。但我只是不明白整个事情:(
我很感激每一个提示或者一个简短的例子:)
提前致谢!
【问题讨论】:
【参考方案1】:我认为,您正在考虑的是 Linq to Sql。但这仅适用于 SQL Server。
http://www.mikeborozdin.com/post/LINQ-To-MySQL.aspx
因此,您唯一的选择是根据从 MySql 服务器获得的数据构建对象,然后对对象执行标准 linq 以进行映射。
希望这会有所帮助, 干杯,
【讨论】:
非常感谢!我认为这几乎就是我一直在寻找的……我希望 :) OP 正在寻求理解 ORM,它适用于 MySQL。我相信他只是对什么是 ORM 感到困惑,而 LINQ to SQL 是 MySQL 的错误方向。 SubSonic 更合适subsonicproject.com【参考方案2】:听起来你想要 Linq to Entities,它支持 SQL Server 以外的数据库。您需要找到一个 MySQL 驱动程序——我在网上搜索时可以看到一些(DevArt、Connector/NET 等)。自己没试过。
【讨论】:
【参考方案3】:有很多支持 Linq 可查询对象的 ORM。他们中的大多数都使用 ADO 驱动程序。如果有一种 DbProvider 支持您的 DBMS,并且您可以指定一个 ConnectionString 将您带到 DBMS 实例,您可以使用其中之一。
看看 Fluent NHibernate。 IMO 它应该提供一个易于实现但可扩展的映射器,该映射器使用您现有的域模型,不生成 DTO 层,最重要的是不需要大量的 XML。
【讨论】:
【参考方案4】:首先查看 ADO.NET。它可以为所欲为。
如果您想要更强大的东西,请考虑使用像 NHibernate 或实体框架这样的 ORM。您不需要 Linq,但如果您需要 Linq,则需要使用 ORM。 LinqToSql 是一个不能与 MySQL 一起使用的 ORM,所以搜索“Linq”而不是“LinqToSql”。
如果您知道自己在寻找什么,有大量示例可以说明如何做到这一点。
【讨论】:
以上是关于.NET、C#、LINQ、SQL 和 OR-Mapping - 我就是不明白 :(的主要内容,如果未能解决你的问题,请参考以下文章
如何通过MVC向数据库中添加数据?用 的是。net、C#、linq to sql 类,在线等!!!
c#编写的代码用:linq和传统的ado.net哪个好,出错少,哪个更快,对服务器的负担最小