Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架代码第一个Linq MVC 3剃须刀_Entity Framework_Asp.net Mvc 3_Linq To Entities_Code First - Fatal编程技术网

Entity framework 实体框架代码第一个Linq MVC 3剃须刀

Entity framework 实体框架代码第一个Linq MVC 3剃须刀,entity-framework,asp.net-mvc-3,linq-to-entities,code-first,Entity Framework,Asp.net Mvc 3,Linq To Entities,Code First,这是我的模型 namespace AtAClick.Models { public class LocalBusiness { public int ID { get; set; } public string Name { get; set; } public int CategoryID { get; set; } public string address { get; set; } publ

这是我的模型

namespace AtAClick.Models
{
    public class LocalBusiness
    {
        public int ID { get; set; }

        public string Name { get; set; }
        public int CategoryID { get; set; }
        public string address { get; set; }
        public string desc { get; set; }
        public int phone { get; set; }
        public int mobile { get; set; }
        public string URL { get; set; }
        public string email { get; set; }
        public string facebook { get; set; }
        public string twitter { get; set; }

        public string ImageUrl { get; set; }

        public virtual Category Category { get; set; }

    }

    public class Category
    {
        public int CategoryID { get; set; }
        public string Name { get; set; }

        public virtual ICollection<LocalBusiness> Businesses { get; set; }
    }

}
但很明显,这是行不通的。我对这一切都是新手,所以提前谢谢你的帮助,如果你需要更多的细节,尽管问吧。谢谢

我的控制器,这是你的意思吗

 public ViewResult Browse(int id)
 {

            int categoryID = id;

            var companyquery = from c in db.LocalBusinesses
                               where c.Category.CategoryID == categoryID
                               select c;

            return View(companyquery);
 }

因为分类有一系列你可以做的事情

IEnumerable<LocalBusiness> result = null;
var category = db.Category.SingleOrDefault(cat => cat.Name == "an cat");
if(category != null){
    result = category.Businesses;
}

return result;
IEnumerable结果=null;
var category=db.category.SingleOrDefault(cat=>cat.Name==“一只猫”);
如果(类别!=null){
结果=类别。业务;
}
返回结果;

如果按类别名称筛选

string categoryName = "foo";

var companyquery = from c in db.LocalBusiness
                   where c.Category.Name == categoryName
                   select c;

如果您是按类别id进行筛选

int categoryId = 1;

var companyquery = from c in db.LocalBusiness
                   where c.CategoryID == categoryId 
                   select c;

您正在比较category对象(c.category)和category类的静态字段(category.Name)。静态字段不存在,因此不会编译

您应该有一个变量来说明特定的category对象,或者至少有一个标识符(比如CategoryID)。名称不够,因为此属性不是唯一的(可能有两个同名的不同类别)

那么,假设您以某种方式获得了一个特定的CategoryID,那么您的LINQ查询将如下所示:

    // The category ID to filter.
    int categoryID = 42;

    // Retrieve all companies that are listed under the given category.
    var companyquery = from c in db.LocalBusiness
                       where c.Category.CategoryID = categoryID
                       select c;

例如,您的categoryID可以从查询参数(声明为控制器方法参数)中获得。

谢谢您的回复。但是,当我尝试这样做时,会出现“对象引用未设置为对象的实例”错误。@Dan是否是LocalBusiness的类别或集合“不是实例”?如果发现的是一个集合,而该集合没有添加任何业务,那么很有可能出现这种情况。在我看来,错误出现在foreach的开头,因此这就是业务集合。这一类别肯定增加了两项业务。我有一个列出它们的视图。嗨,谢谢你的回复,我想把我的控制器添加到我的问题中。这是你的意思吗?再次感谢!是的,类似于:-)您错过了一个用于声明和初始化objectcontext(本例中称为db的变量)的using语句。如果您调用方法参数categoryID,您可以立即使用它,并且您的URL对最终用户()更有意义。谢谢!我需要类别ID被接收,而不是直接编码到控制器中。
    // The category ID to filter.
    int categoryID = 42;

    // Retrieve all companies that are listed under the given category.
    var companyquery = from c in db.LocalBusiness
                       where c.Category.CategoryID = categoryID
                       select c;