Asp.net mvc 3 使用Sharp Lite体系结构在ASP.NET MVC 3中执行连接查询

Asp.net mvc 3 使用Sharp Lite体系结构在ASP.NET MVC 3中执行连接查询,asp.net-mvc-3,entity-framework,s#arp-architecture,Asp.net Mvc 3,Entity Framework,S#arp Architecture,我将使用mystore sharp lite架构示例。您可以在此处下载解决方案: 因此,有两个实体存在问题。产品。和产品类别 产品如下所示: public class Product : Entity { public Product() { Categories = new List<ProductCategory>(); } [DomainSignature] [Required(ErrorMessage = "Name mus

我将使用mystore sharp lite架构示例。您可以在此处下载解决方案:

因此,有两个实体存在问题。产品。和产品类别

产品如下所示:

public class Product : Entity
{
    public Product() {
        Categories = new List<ProductCategory>();
    }

    [DomainSignature]
    [Required(ErrorMessage = "Name must be provided")]
    [StringLength(255, ErrorMessage = "Name must be 255 characters or fewer")]
    public virtual string Name { get; set; }

    /// <summary>
    /// Money is a component, not a separate entity; i.e., the Products table will have column 
    /// for the amount
    /// </summary>
    [DataType("Money")]
    public virtual Money Price { get; set; }

    /// <summary>
    /// many-to-many between Product and ProductCategory
    /// </summary>
    [Display(Name="Product Categories")]
    public virtual IList<ProductCategory> Categories { get; protected set; }
}
公共类产品:实体
{
公共产品(){
类别=新列表();
}
[域名签名]
[必需(ErrorMessage=“必须提供名称”)]
[StringLength(255,ErrorMessage=“名称必须为255个字符或更少”)]
公共虚拟字符串名称{get;set;}
/// 
///货币是一个组成部分,而不是一个单独的实体;也就是说,Products表将有一个列
///金额
/// 
[数据类型(“货币”)]
公共虚拟货币价格{get;set;}
/// 
///产品和产品类别之间的多对多
/// 
[显示(Name=“产品类别”)]
公共虚拟IList类别{get;protected set;}
}
请注意,其中包含ProductCategories列表。因此,它确实有一个适用于它的ProductCategories列表

以下是ProductCategory:

public class ProductCategory : Entity
{
    public ProductCategory() {
        Children = new List<ProductCategory>();
        Products = new List<Product>();
    }

    [DomainSignature]
    [Required(ErrorMessage="Name must be provided")]
    [StringLength(255, ErrorMessage="Name must be 255 characters or fewer")]
    public virtual string Name { get; set; }

    /// <summary>
    /// many-to-one from child ProductCategory to parent ProductCategory
    /// </summary>
    [Display(Name="Parent Category")]
    public virtual ProductCategory Parent { get; set; }

    /// <summary>
    /// many-to-many between ProductCategory and Product
    /// </summary>
    public virtual IList<Product> Products { get; protected set; }

    /// <summary>
    /// one-to-many from parent ProductCategory to children ProductCategory
    /// </summary>
    public virtual IList<ProductCategory> Children { get; protected set; }
}
公共类ProductCategory:实体
{
公共产品类别(){
Children=新列表();
产品=新列表();
}
[域名签名]
[必需(ErrorMessage=“必须提供名称”)]
[StringLength(255,ErrorMessage=“名称必须为255个字符或更少”)]
公共虚拟字符串名称{get;set;}
/// 
///从子ProductCategory到父ProductCategory的多对一
/// 
[显示(名称=“父类别”)]
公共虚拟产品类别父项{get;set;}
/// 
///ProductCategory和Product之间的多对多
/// 
公共虚拟IList产品{get;protected set;}
/// 
///从父ProductCategory到子ProductCategory的一对多
/// 
公共虚拟IList子项{get;protected set;}
}
我非常理解查询,所以我用where语句做了一些简单的查询。例如,这是我在另一个程序中用于搜索客户名字的查询:

 public static IQueryable<Customer> GetByFirstName(this IQueryable<Customer> customers, string name)
    {
        name = name.ToUpper();
        return
            customers.Where(c => c.BillingAddress.FirstName.ToUpper().Contains(name));
    }
public静态IQueryable GetByFirstName(此IQueryable客户,字符串名称)
{
name=name.ToUpper();
返回
其中(c=>c.BillingAddress.FirstName.ToUpper().Contains(name));
}

但我还不太明白。有人能告诉我指示灯吗?

首先,如果您不知道如何加入,您可能应该咨询一些文档,但请记住,这与Sharp Lite没有什么关系

夏普Lite repsitories背后的基本理念是使用IQueryable的强大功能,以减少对底层数据访问的依赖(NH或EF是最流行的),因此您基本上应该学习(如果您使用NH)并开始使用它。另外,试着用一个更复杂的结构来展示一个更好的例子,这样你就可以真正地进行一些连接了

如果您需要在SharpLite上进行跨接启动,请确保阅读并确认。此外,我还参与了演示项目


希望我能帮忙

首先,如果您不了解如何进行连接,您可能应该咨询一些文档,但请记住,这与Sharp Lite没有什么关系

夏普Lite repsitories背后的基本理念是使用IQueryable的强大功能,以减少对底层数据访问的依赖(NH或EF是最流行的),因此您基本上应该学习(如果您使用NH)并开始使用它。另外,试着用一个更复杂的结构来展示一个更好的例子,这样你就可以真正地进行一些连接了

如果您需要在SharpLite上进行跨接启动,请确保阅读并确认。此外,我还参与了演示项目


希望我能帮忙

你想实现什么?问题是什么?Sharp Lite与连接有什么关系?你想做什么?为什么你认为你需要加入?对不起,我不清楚。我正在尝试按ProductCategory查询产品。您想实现什么?问题是什么?Sharp Lite与联接有什么关系?你想做什么?为什么你认为你需要加入?对不起,我不清楚。我试图按ProductCategory查询产品。是的,这是我最终得出的结论。这是一个我需要帮助的问题。不锋利。对不起,这是我的第一个网络应用。弄清楚什么是什么有点困难。不用担心,很高兴知道我能帮上忙。。。请务必查看Sharp Lite的讨论列表“是”,这是我最终得出的结论。这是一个我需要帮助的问题。不锋利。对不起,这是我的第一个网络应用。弄清楚什么是什么有点困难。不用担心,很高兴知道我能帮上忙。。。请务必查看上的Sharp Lite讨论列表