【问题标题】:Virtual public methods within ASP C#ASP C# 中的虚拟公共方法
【发布时间】:2013-07-22 20:46:26
【问题描述】:

我有点好奇是否有更好的方法来完成以下任务。基本上,我有两节课。 A 类和 B 类。 ClassA 具有 ClassB 的外键。我想从 ClassB 中确定 ClassA 中引用 ClassB 的所有元素。希望这个小例子有助于更有意义:

还值得注意的是,我试图在“约定”方面模仿 ASP.NET MVC 4 书:

(在实体文件夹中)

public class ClassA
{
   [Key]
   public int Id {get; set;}
   public ClassB MyClassB {get;set;}
}

public class ClassB
{
   [Key]
   public int Id {get; set;}
   public String title {get; set;}

   virtual public IEnumerable<ClassA> ClassAs(IClassA a)
   { return a.ClassA.Where(....).AsEnumerable(); }
}

(在抽象文件夹中)

public interface IClassA
{
   IQueryable<ClassA> ClassA { get; set; }
}

public interface IClassB
{
   IQueryable<ClassB> ClassB { get; set; }
}

我看到的问题是需要将我拥有的对象的实例(在本例中为 ClassA 的实例)传递给方法 ClassAs。

进一步考虑这一点,可能还可以在接口中创建定义,然后在具体文件夹中声明它。做到这一点的“最佳”方法是什么?了解 EF 如何在连接方面仍然工作仍然有点神秘,任何有趣的资源也将不胜感激。

【问题讨论】:

  • 应该是public virtual; virtual public 不会编译...

标签: c# asp.net-mvc entity-framework-4


【解决方案1】:

如果我理解正确,你就不能在ClassB 中创建一个List&lt;ClassA&gt;

public virtual List<ClassA> ClassAs { get; set; }

这将由 EF 填充,并将包含在 MyClassB 中引用 ClassB 的所有 ClassA

【讨论】:

  • 感谢您的选择。有没有一种简单的方法来测试这样的东西,而不需要 EF 的数据库?我问的原因是因为我花了大约一个小时构建另一个应用程序来尝试测试这些连接。这是我的要点的链接,它提供了我刚刚进行的测试的基础知识https://gist.github.com/TheDarkTrumpet/0232e0d0289f06d95674
  • 我发现了一篇非常有趣的文章,讨论了更紧密绑定的 EF 问题的测试,有点像这篇文章。我想我在公共虚拟不工作的情况下遇到这个问题的原因是因为真正的“EF”不存在,所以这种事情不可能使用简单的起订量进行测试。 stackoverflow.com/questions/3463017/…
猜你喜欢
  • 2011-04-29
  • 1970-01-01
  • 2018-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2013-12-29
相关资源
最近更新 更多