有没有办法在C#中向Linq to SQL dbml添加表?

有没有办法在C#中向Linq to SQL dbml添加表?,c#,.net,linq-to-sql,scripting,dynamic,C#,.net,Linq To Sql,Scripting,Dynamic,我正在编写一些脚本,想知道是否有人知道如何将MSSQL数据库中的表动态添加到dbml文件中,就像使用普通的“拖放”方式一样。框架中是否有允许这样做的内容 更新: 我有一个表的名称,它存在于我的数据库中。如果是在设计时,我可以从服务器资源管理器中将该表拖到Linq to SQL设计器上,这样可以添加该类。我想看看是否有一种方法可以在运行时在代码中实现这一点。这很可能是不可能的,但它对于脚本编写非常有用。不,这是不可能的;LINQtoSQL(以及类似的ORM,如实体框架)的要点是为查询和更新数据库提

我正在编写一些脚本,想知道是否有人知道如何将MSSQL数据库中的表动态添加到dbml文件中,就像使用普通的“拖放”方式一样。框架中是否有允许这样做的内容

更新:


我有一个表的名称,它存在于我的数据库中。如果是在设计时,我可以从服务器资源管理器中将该表拖到Linq to SQL设计器上,这样可以添加该类。我想看看是否有一种方法可以在运行时在代码中实现这一点。这很可能是不可能的,但它对于脚本编写非常有用。

不,这是不可能的;LINQtoSQL(以及类似的ORM,如实体框架)的要点是为查询和更新数据库提供强类型机制。如果在编译时您不知道该模式,那么就不可能对其进行查询,因为您无法编写代码(LINQ to SQL只允许表达式和LINQ语法;您无法手工创建查询字符串)


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

不,这是不可能的;LINQtoSQL(以及类似的ORM,如实体框架)的要点是为查询和更新数据库提供强类型机制。如果在编译时您不知道该模式,那么就不可能对其进行查询,因为您无法编写代码(LINQ to SQL只允许表达式和LINQ语法;您无法手工创建查询字符串)



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

如何动态执行?你想做什么?设计师使用的SqlMetal不可能做到这一点。我建议你试试。出于好奇,你希望使用哪种语法?@alexn:如果我理解正确,OP的观点是他在设计或编译时不知道模式。如果是这样的话,修改physical.dbml文件不会有多大好处,因为实体已经被定义和编译。@Adam-我认为如果有某种方法可以做到这一点,它可能是以某种形式对Linq to SQL模块进行API调用。这是一个漫长的过程,怎么可能?你想做什么?设计师使用的SqlMetal不可能做到这一点。我建议你试试。出于好奇,你希望使用哪种语法?@alexn:如果我理解正确,OP的观点是他在设计或编译时不知道模式。如果是这样的话,修改physical.dbml文件不会有多大好处,因为实体已经被定义和编译。@Adam-我认为如果有某种方法可以做到这一点,它可能是以某种形式对Linq to SQL模块进行API调用。这是一个长期的尝试。你知道动态Linq(你可以手工制作查询字符串)是否会有什么不同吗?@Plum教授:如果有某种方法可以在运行时修改.dbml,可能,但我仍然质疑:为什么?如果您必须自己编写字符串,那么LINQtoSQL给您带来了什么好处?为什么不直接使用连接并自己生成命令呢?我正在处理一个包含数千个表的相当大的数据库,但它们都有相似的结构。我厌倦了单独集成每个表,所以我写了一个脚本,基本上可以给我一些支架来集成每个新表。现在,除了将Linq添加到SQL类之外,所有这些都可以在一个简单的步骤中完成。这其实没什么大不了的,但是编写脚本也很好。@ProfPlum:我不清楚你在做什么,你是想在编译之前还是编译之后为一个项目编写.dbml文件的修改脚本?如果我正确理解你的问题,那将是之前的问题。脚本将运行,脚本将修改开发中另一个未编译项目的源代码。它会自动为项目生成一些代码。它并不意味着要修改一个实时系统,而只是一个开发工具。你知道动态Linq(你可以手工制作一个查询字符串)会有什么不同吗?@Plum教授:如果有某种方法可以在运行时修改.dbml,可能,但我仍然问:为什么?如果您必须自己编写字符串,那么LINQtoSQL给您带来了什么好处?为什么不直接使用连接并自己生成命令呢?我正在处理一个包含数千个表的相当大的数据库,但它们都有相似的结构。我厌倦了单独集成每个表,所以我写了一个脚本,基本上可以给我一些支架来集成每个新表。现在,除了将Linq添加到SQL类之外,所有这些都可以在一个简单的步骤中完成。这其实没什么大不了的,但是编写脚本也很好。@ProfPlum:我不清楚你在做什么,你是想在编译之前还是编译之后为一个项目编写.dbml文件的修改脚本?如果我正确理解你的问题,那将是之前的问题。脚本将运行,脚本将修改开发中另一个未编译项目的源代码。它会自动为项目生成一些代码。它并不意味着对一个实时系统进行修改,而是一个简单的开发工具。