我正在阅读关于LINQ的WROX书,作者正在数据库上执行LINQ。基本上他是作为对象访问数据库,如下面的代码所示。
但我不知道他希望“将数据库作为对象访问”,即使下载的代码在“db.DirectoryInformation”上收到错误,说“DirectoryInformation”未知。
我错过了什么?我认为我首先需要创建LINQ-to-SQL类或ADO.NET EDM,或者是否有更直接的方法将LINQ挂接到数据库,即仅通过创建数据库类并继承自DataContext? / p>
AdventureWorks db = new AdventureWorks("Integrated Security=sspi");
...
[Database(Name = "AdventureWorks")]
public class AdventureWorks : DataContext
{
//public Table<DirInfo> DirectoryInformation;
public AdventureWorks(string connection) : base(connection) { }
public Table<DirectoryInformation> DirectoryInformation;
}
你可以download the whole code here,第1章,LINQ.sln。
答案 0 :(得分:2)
查看Form1.cs源文件的结尾,使用属性声明LINQ to SQL数据库:
[Database(Name = "AdventureWorks")]
public class AdventureWorks : DataContext
{
//public Table<DirInfo> DirectoryInformation;
public AdventureWorks(string connection) : base(connection) { }
public Table<DirectoryInformation> DirectoryInformation;
}
[Table(Name = "DirectoryInformation")]
public class DirectoryInformation
{
[Column(DbType="varchar(50)")]
public string DirectoryName;
[Column(DbType = "varchar(255)")]
public string DirectoryDescription;
}
通过项目提供设置定义连接字符串,这就是将DirectoryInformation类型简单映射到AdventureWorks数据库中的DirectoryInformation表所需的全部内容。
答案 1 :(得分:1)
哦,绝对可以使用带有LINQ-to-SQL的vanilla对象;你甚至不需要继承DataContext
- 但你需要告诉它你的模型。这通常使用成员(对于列)和类型(对于表)的属性来完成,但也可以使用外部映射文件(xml)来完成。我想知道它们是否只是为了简单而过分缩略......例如,我怀疑该表应该是一个属性:
public Table<DirectoryInformation> DirectoryInformation {
get { return GetTable<DirectoryInformation>(); }
}
整个“dbml”就是一个设计工具,可以帮助你生成类;重要的代码就是decoracted类(在导航属性等方面有一些约定,可以让生活变得简单易用)。也就是说,“最快”:使用设计师。