我的存储库有List<Student>,List<Course>并且List<Enrolment>注册有Enrolment.Student和Enrolment.Course,它们是前两个列表中的学生或课程之一.
当我在我的存储库中使用XmlSerializer时,它会输出冗余数据,因为它会对每个学生的所有属性进行序列化,List<Student>然后再对每个对这些学生的参考进行序列化List<Enrolment>.我正在寻找一种优雅的方法来解决这个问题.
反序列化后,我可以使用反序列化创建的重复对象实例中的ID值来修复引用,但这似乎是hackish.
修复冗余输出的一种方法是XmlIgnore Enrolment.Student和Enrolment.Course,并为序列化创建另外两个属性 - Enrolment.StudentID和Enrolment.CourseID.但是,在反序列化期间,由于反序列化的结果List<Student>和List<Course>不可用,因此无法设置Enrolment.Student和Enrolment.Course的引用(AFAIK).
我想到的另一种方法是在我的对象层次结构中向下排序,分别执行每个列表并控制反序列化的顺序 - 我宁愿不这样做.
另一种方法是XmlIgnore List<Enrolment>并创建一个注册序列化助手类,List<Enrolment>在其自身的反序列化完成后进行初始化.这似乎付出了很多努力.
其他人如何使用XmlSerializer序列化/反序列化对同一对象的多个引用?
嗨,我正在编写一个ASP.Net MVC内部网应用程序,可通过手持设备和一系列浏览器访问.我的用户都拥有AD帐户,并且对我们的SQL数据库视图/过程具有不同的权限,具体取决于他们所在的区域.数据库还使用CURRENT_USER进行水平分区.
由于需要访问应用程序的设备范围,我不能依赖模拟/委派或可信子系统.我希望用户在上述机制失败时只输入用户名和密码(与AD相同).
有没有人知道如何在连接字符串中使用AD用户名和密码来访问数据库而无需创建一组SQL镜像帐户?我无法使用网络服务或sql代理帐户登录,因为数据库需要是用户感知的.