c# - 有没有办法在不添加 .dbml 文件的情况下使用 Linq to SQL?

标签 c# linq

我正在使用 Linq to SQL,并且总是通过添加一个 .dbml 文件充当我的应用程序和 SQL 服务器之间的桥梁,我只是好奇是否有任何方法可以在不使用 .dbml 的情况下使用 Linq to SQL。 dbml文件?我偶然发现 Link here同样,但这是不可理解的,请有人对此有所了解。

最佳答案

当然可以。事实上,当我第一次学习 LINQ-to-Sql 时,dbml 文件样板自动生成的代码实际上让我一开始难以消化。所以我开始自己一个一个地装饰我的 POCO 类,然后开始学习编写 LINQ 查询。这是一个快速入门的示例:

我创建了一个数据库“businessLinqToSql”,其中包含一个名为 Customer 的表。使用下面提到的 SQL 脚本:

USE [businessLinqToSql]
GO

/****** Object:  Table [dbo].[Customer]    Script Date: 06/17/2016 11:28:05 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Customer](
    [ID] [int] NOT NULL,
    [Name] [nchar](30) NOT NULL,
    [Address] [nchar](30) NULL,
 CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

创建一个 C# 控制台应用程序并添加一个名为 Customer.cs 的代码文件,如下所示。它将是您的 POCO 类,带有一些声明性属性,这些属性向 LINQ-to-SQL 提供程序提供有关数据库架构的提示:

[Table(Name="Customer")]
public class Customer
{

    [Column(IsPrimaryKey = true)]
    public int ID { get; set; }

    [Column] 
    public string Name { get; set; }

    [Column]
    public string Address { get; set; }

}

然后你可以在你的主函数中写下面的 LINQ 查询:

private static void LinqToSql()
{
    DataContext dataContext = new DataContext("data source=.;initial catalog=businessLinqToSql;integrated security=True;MultipleActiveResultSets=True");
    Table<Customer> customers = dataContext.GetTable<Customer>();
    IQueryable<string> query = from c in customers
                                       where c.Name.Length > 5
                                       orderby c.Name.Length
                                       select c.Name.ToUpper();
    foreach (string name in query) Console.WriteLine(name);
}

关于c# - 有没有办法在不添加 .dbml 文件的情况下使用 Linq to SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37873820/

相关文章:

c# - 为什么 .Net 框架指南建议您不要使用 ref/out 参数?

c# - ASP.NET 默认按钮在 Google Chrome 中不起作用

c# - LINQ:从 linq 中调用方法?,我的方法返回匿名类型

c# - Linq 到实体 : Count is very slow

c# - 如何确保我的 LINQ 查询在我的 DAL 中调用时执行,而不是以延迟方式执行?

c# - 是否可以在服务器中使用Google Analytics(分析)?

c# - 消息泵和 AppDomains

c# - ASP.NET 应用程序对象 getter 和 setter

c# - 将 XAttribute 插入到指定位置的现有 XElement

c# - 当 "WHERE IN()"有数千个值时,如何使用 Nhibernate 检索数据? (sql参数太多)