我们可以使用动态模型实现代码优先方法。
private void btnCreate_Click(object sender, EventArgs e)
{
Model1 context = new Model1();
dynamic expando = new ExpandoObject();
var marksModel = expando as IDictionary<string, object>;
string studentName = "Alice";
marksModel.Add("rollNo", studentName);
marksModel.Add("Name", studentName);
marksModel.Add("Physics", 24);
marksModel.Add("Chemistry", 45);
marksModel.Add("Biology", 31);
context.ExpandoObject.Add(expando);
context.SaveChanges();
}
在Context Class中
public class Model1 : DbContext
{
public Model1()
: base("name=Model1")
{
}
public DbSet<ExpandoObject> ExpandoObject { get; set; }
}
有没有办法使用动态模型?
答案 0 :(得分:1)
这是XY problem。
乍一看,您似乎想要将随机属性附加到实体,并将这些属性存储为列值。因此,您的解决方案是找到一个数据库解决方案,让您可以无模式,向该数据库添加一包数据,然后最终试图找出如何从数据中查询有意义的内容。
这就是人们通常最终同时使用文档数据库和抑郁症的方式。
相反,您需要阅读有关数据库规范化的一两件事。学生和课程或考试之间存在一些关系,或者这些数字代表的任何关系。
所以模型:
public class Student
{
public string Name { get; set; }
public ICollection<Course> Courses { get; set; }
public ICollection<Exam> Exams { get; set; }
}
public class Course
{
public string Name { get; set; }
public ICollection<Student> Student { get; set; }
public ICollection<Exam> Exams { get; set; }
}
public class Exam
{
public Course Course { get; set; }
public Student Student { get; set; }
public decimal Grade { get; set; }
}
需要使用&#34;动态模型&#34;走了。