我在用ASP.NET MVC 3.我按以下顺序获取我的视图数据:
Controller -> Service Layer -> Repository
Run Code Online (Sandbox Code Playgroud)
在我的存储库中,我有一个GetAll方法,它可以返回特定对象的所有记录,例如Category.
因此,如果我需要所有类别的列表,那么在我的控制器中我会有类似的东西:
IEnumerable<Category> categories = categoryService.GetAll();
Run Code Online (Sandbox Code Playgroud)
在服务层我会有类似的东西:
public IEnumerable<Category> GetAll()
{
return categoryRepository.GetAll();
}
Run Code Online (Sandbox Code Playgroud)
现在我需要知道我在哪里开始过滤数据?它可以在这3层中的任何一层中完成,还是只需要在存储库层中?让我们说我需要所有的父类别.我是否拥有.GetAll.Where(x => x.ParentCategoryId == null);控制器,服务层或存储库层?
在我的控制器中是否有这样的情况:
IEnumerable<Category> categories = categoryService.GetParentCategories();
Run Code Online (Sandbox Code Playgroud)
在我的服务层,我可以:
public IEnumerable<Category> GetParentCategories()
{
return categoryRepository.GetAll.Where(x => x.ParentCategoryId == null);
}
Run Code Online (Sandbox Code Playgroud)
或者我的服务层必须如下所示:
public IEnumerable<Category> GetParentCategories()
{
return categoryRepository.GetParentCategories();
}
Run Code Online (Sandbox Code Playgroud)
然后在我的存储库层中,像这样:
public IEnumerable<Category> GetParentCategories()
{
return GetAll()
.Where(x => x.ParentCategoryId == null);
}
Run Code Online (Sandbox Code Playgroud)
请有人帮助澄清我的这种困惑.可能有不同的情况.我可能会带回所有具有活动状态的类别.我可能会带回非活动状态的类别.那我每个都需要一个方法吗?
c# asp.net-mvc repository entity-framework-4.1 asp.net-mvc-3
我有一段时间以来一直是Web开发人员使用ASP.NET和C#,我想尝试通过使用最佳实践来提高我的技能.
我有一个网站.我想一次性加载设置,并在我需要的地方引用它.所以我做了一些研究,50%的开发人员似乎都在使用单例模式来做这件事.其他50%的开发人员都是蚂蚁单身人士.他们都讨厌单身人士.他们建议依赖注入.
为什么单身人士不好?加载网站设置的最佳做法是什么?它们应该只加载一次并在需要的地方引用吗?我将如何通过依赖注入来实现这一点(我是新手)?是否有人可以为我的方案推荐的样品?我也希望看到一些单元测试代码(对于我的场景).
谢谢布兰登
我试图在Entity Framework中创建我的模型,我正在尝试使用代码优先选项.
我目前在我的数据库中有3个表.我的状态表包含Web应用程序中使用的所有状态.我有一张新闻桌.我有一个新闻状态表.我这样做的原因是因为我不想要新闻项目的所有状态,只有几个.所以我的3个表格看起来像这样:
新闻表:
NewsId int required primary key
Title varchar required
Body varchar required
NewsStatusId int required foreign key
Run Code Online (Sandbox Code Playgroud)
NewStatus表:
NewsStatusId int required primary key
StatusId int required foreign key
Run Code Online (Sandbox Code Playgroud)
状态表
StatusId int required primary key
Name varchar required
Run Code Online (Sandbox Code Playgroud)
在为此创建类时,是否需要为News,Status和NewsStatus创建类?我只是想新闻和地位?2/3课程之间我的关系会是什么样子?
我的新闻课看起来像这样
public class News
{
public int NewsId { get; set; }
// rest of my properties
public int StatusId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
状态类:
public class Status
{
public int StatusId { get; set; }
public string …Run Code Online (Sandbox Code Playgroud) 我在用Entity Framework 5 code first.在我的数据库中,我有2个表,AvailPayPeriods和AvailPayPeriodsWeekly.它们看起来都一样:
Period datetime not null
Run Code Online (Sandbox Code Playgroud)
因为这两个表本质上是相同的,所以我决定创建以下类来表示2中的1个:
public class PayPeriod : IEntity
{
public int Id { get; set; }
public DateTime Period { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在努力配置2.我在我的数据库上下文类中有以下内容:
public DbSet<PayPeriod> WeeklyPayPeriods { get; set; }
public DbSet<PayPeriod> MonthlyPayPeriods { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new WeeklyPayPeriodConfiguration());
// Haven't yet created the configuration file for monthly pay periods
}
Run Code Online (Sandbox Code Playgroud)
我的WeeklyPayPeriodConfiguration班级:
class WeeklyPayPeriodConfiguration : EntityTypeConfiguration<PayPeriod>
{ …Run Code Online (Sandbox Code Playgroud) c# ado.net entity-framework ef-code-first entity-framework-5
我想从集成测试开始.我正在使用ASP.NET MVC 3应用程序.我正在使用Entity Framework 4 Code First CTP5.我对数据库的集成测试是在一个单独的项目中,类似于MyProject.Data.IntegrationTests.
我打算使用SQL Server CE 4或SQLite.有关使用其中任何一项的建议/提示/意见,我想要完成的任务?
有谁知道我能读到的关于我想要完成的任何体面的文章?并且将非常感谢帮助/反馈.
我正在使用SQL Server 2008作为我的数据库.但是在测试我的存储库时,我想针对上面提到的其中一个数据库测试它们,所以我需要指定连接字符串.
UPDATE
我从服务层(从我的控制器调用)工作,然后服务层将调用我的存储库.例如,下面是我如何添加新闻项:
服务类:
public class NewsService : INewsService
{
private INewsRepository newsRepository;
public NewsService(INewsRepository newsRepository)
{
this.newsRepository = newsRepository;
}
public News Insert(News news)
{
// Insert news item
News newNews = newsRepository.Insert(news);
// Insert audit entry
// Return the inserted news item's unique identifier
return newNews;
}
}
Run Code Online (Sandbox Code Playgroud)
存储库类:
public class NewsRepository : INewsRepository
{
MyContext context = new MyContext();
public NewsRepository()
{ …Run Code Online (Sandbox Code Playgroud) sql-server sqlite entity-framework sql-server-ce entity-framework-4
我首先使用Entity Framework 4.1代码和ASP.NET MVC 3,我正在努力使我的自引用设置正确.我有一个Category类.它必须是自我引用的.当表中的ParentCategoryId为null时,类别可以是父类别.如果某个类别的ParentCategoryId具有值,则表示它属于父类别.
我遵循了关于代码项目的这篇文章.
这是我的Category类:
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string MetaKeywords { get; set; }
public string MetaDescription { get; set; }
public bool IsActive { get; set; }
public virtual Category ParentCategory { get; set; }
public int? ParentCategoryId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的上下文类:
public class PbeContext : DbContext
{
public DbSet<Category> …Run Code Online (Sandbox Code Playgroud) entity-framework entity-framework-4 entity-framework-4.1 asp.net-mvc-3
我不确定如何映射下面的表格EF 4.1 code first以及我需要表示表格的对象.我如何检索产品规格列表?
我目前只Product上课了.
Products Table:
Id
Name
IsActive
ProductSpecification Table:
ProductId
SpecificationId
Specifications Table:
Id
Name
IsActive
Run Code Online (Sandbox Code Playgroud)
ProductSpecifications是一个关联表.我的上下文类中也定义了以下内容:
public DbSet<Product> Products { get; set; }
Run Code Online (Sandbox Code Playgroud)
编辑
请参阅我更新的原始帖子.我更改了产品和规格表的ID.
在我的上下文课中,我有以下内容:
public DbSet<Product> Products { get; set; }
public DbSet<Specification> Specifications { get; set; }
Run Code Online (Sandbox Code Playgroud)
在我的存储库中,我有以下内容:
public Product GetById(int id)
{
return db.Products
.Include("Specifications")
.SingleOrDefault(x => x.Id == id);
}
Run Code Online (Sandbox Code Playgroud)
我的Product class(部分):
public class Product : IEntity
{
public int Id { get; set; …Run Code Online (Sandbox Code Playgroud) 我正在Nop Commerce和我一起工作并想知道是否有人可以帮助我解决我的困惑.
我已经多次调试代码,试图找出在启动Web应用程序时如何加载设置.我只是不明白!
所有设置类都实现了该ISettings接口.让我们以客户设置为例..我发现它是由CustomerSettings类代表的.在数据库中有一个Setting table.客户设置的数据看起来像这样:
customersettings.usernamesenabled
customersettings.checkusernameavailabilityenabled
customersettings.allowuserstochangeusernames
... and so on...
Run Code Online (Sandbox Code Playgroud)
每个这些设置如何以及在何处映射customersettings到CustomerSettings类以及usernamesenabled映射到UsernamesEnabledCustomerSettings类中的属性的属性?为什么这样实现?
我知道它与类中的以下代码有关DependencyRegistrar:
builder.RegisterGeneric(typeof(ConfigurationProvider<>)).As(typeof(IConfigurationProvider<>));
builder.RegisterSource(new SettingsSource());
Run Code Online (Sandbox Code Playgroud)
如果有人能指出我正确的方向,那么我们将不胜感激.
我正在阅读c#数组,所以我的问题最初是在数组上.
声明数组实际意味着什么?我知道你声明了一个类型为array的变量.当我有以下内容时,实际发生了什么?
int[] values;
Run Code Online (Sandbox Code Playgroud)
声明时它是否在记忆中?如果不是那么它在哪里?阵列实际上是在这里创建的吗?
然后我去实例化一个数组并用一些值初始化它,如:
int[] values = new int[] { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)
这实际上是现在创建阵列吗?我已阅读,创建数组在声明时,别人说自己被实例化时创建数组.我想让我的术语正确.
整数变量也是如此.如果我有:
int value;
Run Code Online (Sandbox Code Playgroud)
和
int value = 1;
Run Code Online (Sandbox Code Playgroud)
什么时候创建int?什么时候加入内存?
抱歉愚蠢的问题.我理解这个概念,但想知道阵列的幕后technicallity.
你如何添加span tag一个内部a tag使用Html.ActionLink?这样的事情有可能吗?
我ASP.NET MVC 4在一起使用Twitter Bootstrap version 3.
我有一个下拉菜单,HTML看起来像这样:
<ul class="nav navbar-nav">
<li class="@(Model.Equals("Home") ? "active" : "")">
<a href="#">
<span class="glyphicon glyphicon-home"></span> Home
</a>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我想要做这样的链接:
<li>@Html.ActionLink("Home", "Index", "Home")</li>
Run Code Online (Sandbox Code Playgroud)
但是混合物中有一个跨度标记,这使得它更复杂一些.
我也可以使用以下内容:
<a href="@Url.Action("Index", "Home")">
<span class="glyphicon glyphicon-home"></span> Home
</a>
Run Code Online (Sandbox Code Playgroud)
很想知道以上是否可行?
asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 twitter-bootstrap
c# ×4
ado.net ×3
asp.net-mvc ×3
asp.net ×2
sql-server ×2
.net ×1
autofac ×1
indirection ×1
nopcommerce ×1
repository ×1
singleton ×1
sql ×1
sqlite ×1