代码之家  ›  专栏  ›  技术社区  ›  jeremcc chris

刷新LINQ to SQL设计器中的表时出现问题

  •  10
  • jeremcc chris  · 技术社区  · 17 年前

    我使用LINQtoSQL已经有一段时间了,有一件事一直困扰着我。每当我修改表的模式时,为了在设计器中刷新它,我必须先删除它,然后再重新添加它。那很好,但这意味着我必须 发现 设计师的桌子。我的数据库中有大约100多个表,每次我这样做,就像大海捞针一样。嗯,也许没那么糟糕,但说真的,它需要的时间比它应该需要的要长。

    有没有其他我不知道的刷新表格的选项?

    9 回复  |  直到 17 年前
        1
  •  7
  •   Pure.Krome    17 年前

    有些人使用 SqlMetal “刷新/更新”他们的Linq2Sql设计器。当数据库更改时,设计器不支持刷新架构。您必须手动删除该表并将其重新添加回。

    ADO Entity Framework

    有用信息: Google's results 对于SqlMetal。

        2
  •  3
  •   Christopher Edwards    17 年前

    使用VS linq to sql设计器是不可能的。

    您可以使用第三方工具llblgenpro而不是内置的linqtosql设计器来实现这一点。它不是免费的,但它也做了很多其他的事情,当然你可能需要也可能不需要。

    LLBLGEN PRO实际上是一整套ORM工具,但还包括一个增强的linq到sql设计器,具有“从sql刷新模型”功能。

    http://weblogs.asp.net/fbouma/archive/2008/05/01/linq-to-sql-support-added-to-llblgen-pro.aspx 这是工具- http://www.llblgen.com/

        3
  •  1
  •   Todd Smith Brandon    17 年前

        4
  •  1
  •   KristoferA    17 年前

    我已经编写了一个外接程序可以做到这一点(在两个方向上;数据库->DBML)

    这意味着您在模型的其他区域中所做的任何自定义(重命名属性/导航属性等)都不会被删除/覆盖,除非它们与基础db架构冲突。(在这种情况下,您仍然可以通过将它们添加到外接程序的“排除列表”来保留它们)

    http://www.huagati.com/dbmltools/

        5
  •  1
  •   Taylor    15 年前

    当我更改存储过程返回的列时,从设计器中删除该过程并重新添加它是不起作用的。设计器生成的自定义返回类型实体不反映对SP的更改。

    我曾尝试在服务器资源管理器中断开DB的连接,甚至删除并重新添加连接。

    1.从设计器中删除SP。 2.保存dbml文件(或整个解决方案,无论什么) 4.重新打开Visual Studio和您的解决方案。

    我认为这就是屁股上的蓝丝带痛。 有人有更简单的解决办法吗?

    PS-对于那些拥有100多个表的人:去获得一个真正的(real==成熟的)ORM工具。我个人投票给内蒂尔斯。它摇晃。使用多年,没有(或至少很少)抱怨。您可能需要购买CodeSmith才能有效地使用它,但这是值得的。这些模板是开源的。还有nHibernate的模板。但我发现我并没有真正深入研究Java端口。如果我要在MS平台上编写代码,我想要的代码是“天生”的。。。

        6
  •  0
  •   flesh    17 年前

    我曾与设计师有过类似的问题-我能建议的最好的事情是为数据访问的不同区域创建多个上下文-我将我的问题分解为尽可能少的几个相关表,以便我可以为每个功能区域处理。您可以跨上下文重用表,所以这不是什么大问题。

        8
  •  0
  •   Bruno Lopes    17 年前

    还有几个其他选择:

    1. 编辑设计器用于绘制表和生成代码的.dbml文件。我在变化很小时使用过这种方法(添加两列,创建一个简单的表)
        9
  •  -1
  •   Daniel Schaffer    17 年前

    我个人 使用设计器时,每当我敢于使用它时,我都会遇到各种各样的问题。

    [Table("dbo.my_table")]
    public class MyTable
    {
    [Column("id", AutoSync = AutoSync.OnInsert, IsDbGenerated = true, IsPrimaryKey = true)]
    public Int32 Id { get; set; }
    
    [Column("name", DbType="NVarChar(50) NOT NULL")]
    public String Name { get; set; }
    }
    

    这样,您的所有实体都有自己的文件,这使得查找它们更加容易,尽管您仍然需要手动添加/更新属性。