Asp.net mvc 3 使用Sharp Lite体系结构在ASP.NET MVC 3中执行连接查询
我将使用mystore sharp lite架构示例。您可以在此处下载解决方案: 因此,有两个实体存在问题。产品。和产品类别 产品如下所示: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
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讨论列表