0

我正在尝试复制一个复杂的对象。原始对象就像

         Note note = db.Notes.FirstorDefault(n............);

当我将鼠标悬停在 Note 对象上时,会看到这个 stuctor

注意 | 数据.模型.注释

如果向下钻取,我会看到

Base Data.Model.AnalyNote

如果再次向下钻取,我会看到

基础数据.模型 CPObject

如果查看变量“note”,我会在第一层看到这个

         +base Data.Model.Note
         +AnalyNotes
          FisYear
          Quarter
          QReport

如果我看第二层

         +base Data.Model.AnalyNote
         +Attachments
         +Classify
          Headline
          IsDraft

如果我去第三层

         +Data.Model.CPObject
          EntryId
         +EntryDate
          Id

其中每一个(Note、AnalyNote、CPObject)都是单独的模型。我可以创建单独的模型,但不明白如何嵌入它们以复制原始 Note 模型。我创建了三个使用

         var NNotes = new Notes()
         {
            data.....
         }

         var AAnote = new AnalyNote()
         {
            data......
         }

         var CPONote = new CPObject()
         {
            data.....
         }

这是我所得到的。

4

2 回答 2

3

这里有两件事:

  1. 从您的向下钻取来看,Data.Model.Note 似乎继承自 Data.Model.AnalyNote,后者继承自 Data.Model.CPObject(我假设您在 CPObject 的命名空间之外留下了一个句点)。因此,您不需要创建所有三个,只需创建 Data.Model.Note。MVC 应该为您处理建模工作。
  2. 如果您从实现iCloneable的东西中获取 Note ,您的工作可能很简单

    Note note = db.Notes.FirstorDefault(n............); Note duplicate = note.Clone();


从您下面的评论中,听起来您正在尝试对您的 Note 模型进行子类化。听起来您的模型还没有任何数据,因此代码优先的方法可能会很好。你可能会像这样制作一个新模型

class Data.Model.NewerNote : Data.Model.Note
{
// the new fields ("variables") would go here.
     public int NoteFoo {get; set;}
     public DateTime NoteFrob {get; set;}
// and so on.
} 

您可以在此处找到参考书,例如Programming Entity Framework: Code FirstProgramming ASP.NET MVC 4

于 2012-10-11T18:19:13.250 回答
0

尽管我认为 Reacher Gilts 的回答正确地分析了您的情况,但如果您想“将一个对象嵌入另一个对象”,这被称为组合,它就像声明一个新类一样简单,该类的成员是其他三个类的实例。

public class OuterNote
{
    NNote nNote;
    AAnote aaNote;
    CPONote cpoNote;

   public OuterNote()
   {
       nNote = new NNote();
       aaNote = new AANote();
       cpoNote = new CPONote();
   }

   // add other constructors or initializers to this class and the others needed
}
于 2012-10-11T18:36:40.823 回答