首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

WinForm三层架构,外键对象展示

2013-09-05 
WinForm三层架构,外键对象显示Models实体类使用外键对象public class UserType{public Int32 Id { get se

WinForm三层架构,外键对象显示
Models实体类使用外键对象


public class UserType
{
    public Int32 Id { get; set; }
    public string TypeName { get; set; }
}
public class UserInfo
{
    public Int32 Id { get; set; }
    public string Name { get; set; }
    public string Gender { get; set; }
    public UserType UserType { get; set; } 
}


DAL层

public IList<UserInfo> GetAllUser()
{
    IList<UserInfo> list = new List<UserInfo>();
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();
        using (SqlCommand cmd = conn.CreateCommand())
        {
            cmd.CommandText = "select * from UserInfo";
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                UserTypeService userTypeService = new UserTypeService();
                UserInfo userInfo = new UserInfo();
                userInfo.Id = (Int32)reader["Id"];
                userInfo.Name = (string)reader["Name"];
                userInfo.Gender = (string)reader["Gender"];
                userInfo.UserType = userTypeService.GetUserTypeById((Int32)reader["TypeId"]);//外键的处理
                list.Add(userInfo);
            }
        }


    }
    return list;
}



在表示层我拿到的是List泛型,直接与DataGridView属性DataSource绑定,UserType这一列显示Personal.Models.UserType,没有外键对象。
如果我在BLL层将List泛型转成DataTable传给表示层的方法可不可取。
有没有更好的方法能在DataGridView和ComboBox控件显示外键对象。Asp.Net上用自定义模板可以显示,那WinForm上怎么做啊?
[解决办法]
1.DAL怎么可能知道数据结构,
  ado就是最好的DAL,十几年了,至今无出其右,照着写不难吧
2.那个Model更是多余,仅仅是user数据就会有N多种输出方式,
比如一个下拉列表,仅仅需要UserId和UserCodeAndName(就象这样:001_张三),
又来一个表格:需要要UserName,Tel,DeptName...等等20个字段,
楼主是不是把所有字段装进1个class,还是写N个class??
而且这些需求经常变化,难不成以后都要修改程序,按你的代码,修改的可不知一处啊
[解决办法]
难道你的程序只用一种方式呈现user??
一张表输出N个视图,
N个表组合M个视图,一个程序的查询方法1000个也不为多,
难道你都要写class??
[解决办法]
ado就能做到,ado就是最好的DAL
[解决办法]
一个应用程序能够随时随地访问多个数据库,这是最基本的设计要求,
反正我没有用到什么抽象工厂,我见过petshop的代码,搞了那么多飞机,也实现不了这个最基本的要求
[解决办法]
枚举吧

热点排行