【问题标题】:Is there a way to add a table to a Linq-to-SQL dbml in C#?有没有办法在 C# 中将表添加到 Linq-to-SQL dbml?
【发布时间】:2011-06-10 01:57:01
【问题描述】:

我正在编写一些脚本,想知道是否有人知道一种将 MSSQL 数据库中的表动态添加到 dbml 文件中的方法,就像普通的“拖放”一样方法。框架中有什么允许这样做的吗?

更新:

我有一个表的名称,它存在于我的数据库中。如果是设计时间,我可以将表从服务器资源管理器中拖放到 Linq to SQL 设计器上,这将添加该类。我想看看是否有办法在运行时在代码中执行此操作。这可能不太可能,但它对于脚本目的非常有用。

【问题讨论】:

  • 动态如何?你想做什么?
  • 这是不可能通过设计者使用的SqlMetal实现的。我建议你试试sqlmetalinclude.codeplex.com
  • 出于好奇,您期待什么样的语法?
  • @alexn:如果我理解正确,OP 的观点是他在设计或编译时不知道架构。如果是这种情况,修改物理 .dbml 文件不会有多大好处,因为实体已经被定义和编译了。
  • @Adam - 我认为如果有某种方法可以做到这一点,它可能是以对 Linq-to-SQL 模块的某种 API 调用的形式。这是一个远射。

标签: c# .net linq-to-sql scripting dynamic


【解决方案1】:

不,这是不可能的; LINQ-to-SQL(和类似的 ORM,如实体框架)的重点是为您提供查询和更新数据库的强类型机制。如果您在编译时不知道架构,那么就无法查询它,因为您无法编写代码来执行此操作(LINQ-to-SQL only 允许表达式和 LINQ 语法;您不能手工制作查询字符串)。

如果您在编译时不知道您的架构,最好使用普通的 ADO.NET DbConnectionDbCommand 对象来执行数据操作。

【讨论】:

  • 您知道动态 Linq(您可以在其中手工制作查询字符串)是否会有所作为?
  • @Prof Plum:如果有某种方法可以在运行时修改 .dbml,可能,但我仍然质疑:为什么?如果您必须自己编写字符串,LINQ-to-SQL 能给您带来什么好处?为什么不直接使用连接并自己执行命令?
  • 我正在使用一个包含数千个表的大型数据库,但它们都具有相似的结构。我厌倦了必须单独集成每个表,所以我编写了一个脚本,它基本上会给我一些脚手架来集成每个新表。除了添加 Linq-to-SQL 类之外,现在这一切都可以在一个简单的步骤中完成。这并不是什么大不了的事,但编写脚本也很好。
  • @ProfPlum:我想我不清楚你在做什么,你是不是想为项目编写 .dbml 文件的修改脚本之前编译时间,还是编译时间之后?
  • 如果我正确理解你的问题,它会在之前。该脚本将被运行,该脚本将修改另一个正在开发中的未编译项目的源代码。它为项目自动生成一些代码。它并不意味着对实时系统进行修改,而只是一个开发工具。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多