.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哪个好,出错少,哪个更快,对服务器的负担最小

Asp.Net 5 缺少 Linq to Sql 类

C# LINQ 中的多短语搜索无法转换为 SQL

LINQ TO SQL 和 ADO.NET ENTITY 有啥区别呢?

C#的lINQ怎么用干啥用的?