小编tco*_*ode的帖子

从Generic Repository派生的类

我有一个Generic Repository类,见下文,用于执行常见的数据访问功能,即Add,GetByID等.

    public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
    {
    internal GolfEntities context;
    internal DbSet<TEntity> dbSet;

    public GenericRepository(GolfEntities context)
    {
        this.context = context;
        this.dbSet = context.Set<TEntity>();
    }

    public TEntity GetByID(object id)
    {
        return dbSet.Find(id);
    }
Run Code Online (Sandbox Code Playgroud)

我想创建另一个从这个Generic Repository类派生的Repository类,这样我就可以执行其他不属于Generic Repository类的函数,例如,获取用户的全名.

我创建了一个名为UserRepository的类,见下文,它来自Generic Repository,但是,我在编译时遇到错误:

Repository.GenericRepository <User>不包含带0个参数的构造函数

public class UserRepository : GenericRepository<User>, IUserRepository
{

    internal GolfEntities _context;

    public UserRepository() : base() { }

    public UserRepository(GolfEntities context)
    {
        _context = context;
    }

    public string FullName()
    {
        return "Full Name: Test FullName";
    }


}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这一问题? …

c# repository derived-class repository-pattern

1
推荐指数
1
解决办法
1973
查看次数

实体框架4.1原始SQL

我正在使用Entity Framework 4.1开发ASP.Net MVC 3应用程序.对于我需要执行的特定复杂查询,我决定编写一个原始SQL查询并将其传递给内置的dbSet.SqlQuery方法.

我有一个像下面这样的服务方法,我将SQL查询分配给一个名为query的字符串变量.由于查询传递了两个参数,我已经参数化这些以防止SQL注入.

public IList<User> GetAvailableLocums(int shiftID, int shiftDateID)
{
           var query ="Select .... where t1 = @p0 and t2 = @p1";

           ObjectParameter _shiftID = new ObjectParameter("p0", shiftID);
           ObjectParameter _shiftDateID = new ObjectParameter("p1", shiftDateID);

           object[] parameters = new object[] { _shiftID, _shiftDateID };


           return _UoW.User.GetWithRawSql(query, parameters).ToList();
 }
Run Code Online (Sandbox Code Playgroud)

然后我将查询和参数传递给我的存储库中的一个方法,该方法为我执行查询.

public IEnumerable<TEntity> GetWithRawSql(string query, params object[] parameters)
{
            return dbSet.SqlQuery(query, parameters).ToList();
}
Run Code Online (Sandbox Code Playgroud)

我知道查询是正确的,因为我在SQL Server Management Studio中测试过,但是,当我尝试运行此代码时,我当前收到以下错误

从对象类型System.Data.Objects.ObjectParameter到已知的托管提供程序本机类型不存在映射

有没有人对我如何解决这个问题有任何建议?

谢谢你的帮助.

sql entity-framework-4.1

1
推荐指数
1
解决办法
2105
查看次数

Linq to Entities 在没有匿名类型的列上不同

我正在使用Entity Framework 5.0并且我希望返回一个对象列表,但是,我想对列表中每个对象的一个属性执行DISTINCT

我知道Stackoverflow 上已经有一些与我的问题类似的问题,但是,我仍然在为这个问题而苦苦挣扎。

目前我的查询看起来像这样

public IList<tblcours> GetAllCoursesByOrgID(int id)
{
     return _UoW.tblcoursRepo.All.Where(c => c.tblCourseCategoryLinks.Any(cl => cl.tblUnitCategory.tblUnit.ParentID == id))
            .OrderBy(c => c.CourseTitle)
            .ToList();
}
Run Code Online (Sandbox Code Playgroud)

但是,我需要对属性MainHeadingID执行DISTINCT以删除任何已经具有相同 ID 的对象,但仍返回整个对象及其所有属性

最好,我想返回IList,正如您从我的方法中看到的那样,而不是 Anonymous Type

非常感谢您对此的任何帮助。

谢谢。

linq-to-entities entity-framework anonymous-types distinct

1
推荐指数
1
解决办法
1914
查看次数

ASP.Net MVC 3下拉列表

我正在开发ASP.Net MVC 3 Web应用程序.我的一个Razor Views包含一些Textbox和一个下拉列表.当用户从下拉列表中选择一个选项时,我需要一个部分视图或类似的东西,以显示在下拉列表下方,而不需要回发.

问题是,当用户从下拉列表中选择一个选项时,它并不像简单的JQuery Hide and Show for Partial View那样容易,我需要将它们的选项发送到Controller中的方法,执行一些基于此选项的逻辑,然后将一些数据返回到部分视图.

我对AJAX没有太多经验,但我觉得这是我需要使用的技术才能解决我的问题.

有没有人必须编写类似于我上面描述的任何代码?如果是这样,我需要使用AJAX吗?

此外,如果有人知道任何教程或代码snipets我可以看到帮助,这将不胜感激.

谢谢.

UPDATE

我跟着Ryan的回答,不幸的是我仍然有一些问题.我创建了以下JavaScript文件,然后在我的视图中引用

$(document).ready(function () {

$("#myDDL").change(ChangeEventOfDDL);

function ChangeEventOfDDL(){
var dropDownValue = $('#myDDL').val();
//alert(dropDownValue);
$.ajax({ type: "GET",
       url: '@Url.Action("SomePartialView","testAjax")',
       data: {
           id: dropDownValue
       },
       success: function(data) {
             $('#someDivToLoadContentTo').html(data);
       }
    });
}

});
Run Code Online (Sandbox Code Playgroud)

视图

    <select id="myDDL">
    <option></option>
    <option value="1">F1</option>
    <option value="2">F2</option>
    <option value="3">ST1</option>
    <option value="4">ST2</option>
    </select>


<div id="someDivToLoadContentTo">

</div>
Run Code Online (Sandbox Code Playgroud)

我的控制器看起来像这样

public class testAjaxController : Controller
{
    //
    // GET: /testAjax/

    LocumEntities context = new LocumEntities();

    public …
Run Code Online (Sandbox Code Playgroud)

ajax jquery asp.net-ajax asp.net-mvc-3

0
推荐指数
1
解决办法
2314
查看次数

C#将对象添加到列表

我创建了一个新的用户类型的空列表(用户是我的EDM中的实体)

List<User> AvailableLocums = new List<User>();
AvailableLocums = null;
Run Code Online (Sandbox Code Playgroud)

我还有另一个类型为User的 List,其中填充了查询结果

List<User> Locums = _shiftDateService.GetAvailableLocums(id, shiftDate.shiftDateID).ToList();
Run Code Online (Sandbox Code Playgroud)

然后我想循环Locums List,做一些逻辑,然后将User添加到我的AvailableLocums List

foreach (var locum in Locums)
{
   //Do some logic

   AvailableLocums.Add(locum);

}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试这样做时,我得到以下错误

你调用的对象是空的.

然后我尝试修改我的代码并执行以下操作

foreach (var locum in Locums)
{
       //Do some logic

       User locumUser = new User();
       locumUser = locum;

       AvailableLocums.Add(locumUser);     
}
Run Code Online (Sandbox Code Playgroud)

但我又得到了同样的错误

你调用的对象是空的.

有人可以帮我这个吗?

谢谢.

c# list asp.net-mvc-3

0
推荐指数
1
解决办法
3102
查看次数