2017-09-26 5 views
-1

動的モデルを使用したコードの第1のアプローチを実装できますか?動的モデルによるコードの第1のアプローチ

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(); 
} 
コンテキストクラスで

public class Model1 : DbContext 
{ 

    public Model1() 
     : base("name=Model1") 
    { 
    } 

    public DbSet<ExpandoObject> ExpandoObject { get; set; } 
} 

動的モデルを使用して行う方法はありますか?

+4

これを使用してEFはどのようにテーブルを作成するのですか? – adiga

答えて

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; } 
} 

そして、「動的モデル」を使用する必要性が消えます。

関連する問題