针对未知/多个MSSQL数据库的动态CRUD

时间:2015-07-10 18:54:38

标签: c# asp.net sql-server node.js

我想了解一下如何使用所有列的约束从MSSQL数据库中检索数据。我列出了服务器上的所有数据库,让用户选择数据库,然后让他们选择一个表来反对CRUD。这将在javascript网格(Slickgrid)中显示,以进行内联编辑。 当您在MSSQL Management Studio中右键单击表并选择编辑前200

时,它将非常接近您所获得的内容

Chalenges

  1. 应用程序应该访问经常更改的一堆不同的数据库,因此生成POCO是不可能的。数据库也经常制作,并且不包含FK。

  2. 我确实需要一些服务器端验证,最好是客户端也适用于所有列,所以我需要从DB获取有关数据类型,nvarchar长度,可空或否等的信息

  3. 我习惯使用 EF / ADO.NET C#中进行编程,但我不介意尝试其他语言,例如{ {3}},如果对我所追求的东西有任何好的支持(尽管对PHP不感兴趣)。

    我正在考虑将ASP.NET MVC与ADO.NET一起使用,并将数据读入这样的模型:

    public class GridVM 
    {
        public IEnumerable<Column> ColumnDefinitions { get; set; }
        public IEnumerable<dynamic> Rows { get; set; }
    }
    
    public class Column 
    {
        public string Name { get; set; }
        public string Type { get; set; } //perhaps public Type Type?
        public bool Nullable { get; set; }
        public int MaxLength { get; set; }
    }
    

    然后创建一个动态列表,其中的属性数与 ColumnDefinitions 中的条目数相对应。

    dynamic 
    {
        public object column1 { get; set; }
        public object column2 { get; set; }
        public object column3 { get; set; }
        //etc, so that I get properties for all the columns
    }
    

    我确实有一些代码用于将检索到的数据从Node.js绑定到数据模型,忽略了与列名不对应的属性名称,但我需要在没有已知数据模型的情况下执行此操作。

    问题

    这是一个好方法还是应该重新考虑使用其他技术或方法?我现在没有看到这种方法有任何陷阱吗?

0 个答案:

没有答案