小编Tho*_*mas的帖子

多个类映射到Entity Framework 4.1 Fluent API中的同一个表

我有一个非常简单的模型,它映射到我的数据库中的一个表(项目).我选择将图像抽象到自己的类中.

public class Project
{
    public long Id { get; set; }
    public string Name { get; set; }
    public Image Images { get; set; }
}

public class Image
{
    public string Thumbnail { get; set; }
    public string PrimaryImage { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我将如何使用以下代码将我的模型连接到数据库中的表:

public class Context : DbContext
{
    public DbSet<Project> Projects { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        ????
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

c# entity-framework-4 ef-code-first entity-framework-4.1

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

部署ASP.NET MVC应用程序时IIS 7.5 403访问被拒绝错误

这个场景非常基础.我正在尝试在我的EC2云服务器上运行我的MVC 3应用程序.这些是我采取的步骤:

  1. 使用默认设置安装的Web角色并添加了ASP.NET
  2. 已安装的SQL Server Express
  3. 已安装MVC 3
  4. 安装了.NET 3.5 SP1和.NET 4.0
  5. 安装了所有更新
  6. 安装了Web Deploy 2.0并配置了一次单击部署
  7. 创建了一个拥有自己的应用程序池的新网站
  8. 部署了我的网站

当我尝试访问它时,我得到403访问被拒绝错误.我可以访问静态HTML页面,所以我认为它与用户权限和应用程序池有关.在将其部署到云之前,我在本地虚拟机上运行完全相同的步骤进行测试,一切正常.

我做了一些研究,我尝试在IIS中选择该站点,单击身份验证,编辑匿名身份验证并将用户更改为应用程序池标识(虽然我的本地VM在IUSR下运行它并且它可以工作)但仍然没有运气.

我没有做任何与众不同的事情,所以我在这里有点不知所措.任何帮助表示赞赏.

iis iis-7 iis-7.5 asp.net-mvc-3

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

我是否应该出于数据库性能原因实现LINQ查询?

我有以下代码:

var result = Database.Set<Product>()
    .Where(x => x.Product.CreatedAt >= fromDate
             && x.Product.CreatedAt <= toDate);

var group1 = result
    .GroupBy(x => new { Id = x.Id, Name = x.Name })
    .Select(x => new { Id = x.Key.Id, Name = x.Key.Name });
var group2 = result
    .GroupBy(x => new { Id = x.Id, Price = x.Price })
    .Select(x => new { Id = x.Key.Id, Name = x.Key.Price });
var group3 = result
    .GroupBy(x => new { Id = x.Id, Category = x.Category …
Run Code Online (Sandbox Code Playgroud)

linq

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

首先在EF代码中删除会导致导航属性设置为null并为空

当我首先使用EF代码执行删除时,我发现了一些有趣的东西.我使用以下域模型:

public class User
{
    public virtual long Id { get; set; }
    public virtual string Name { get; set; }
    public virtual ICollection<Playlist> Playlists { get; set; }
}

public class Playlist
{
    public virtual long Id { get; set; }
    public virtual string Title { get; set; }
    public virtual User User { get; set; }
    public virtual ICollection<Track> Tracks { get; set; }
}

public class Track
{
    public virtual long Id { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

ef-code-first entity-framework-4.1

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

将数据导出到平面文件的SSIS将双引号呈现为十六进制字符

我有一个简单的SSIS作业,将数据从数据库导出到平面文件.我使用双引号作为文本分隔符.当我在我的开发机器上运行工作时,一切都很好.但是,当我将作业移动到运行带有SQL Server 2008 R2的Windows 2008的临时服务器时,CSV文件中的双引号将导出为X0022(十六进制).

有谁知道为什么会这样,以及如何解决它?

ssis sql-server-2008

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

如果可能,将if条件合并到单个LINQ语句中

我目前正在使用ASP.NET MVC和Entity Framework Code First使用存储库模式来显示具有分页的用户的简单列表.我添加了过滤该列表的功能,允许最终用户从两个下拉菜单和两个带开始和结束日期的文本框中选择条件.

有没有比下面的代码更好的方法来执行此操作,我必须测试所有可能的参数组合,以便编写适当的LINQ查询:

public IEnumerable<User> GetAllByCondition(int? condition1, int? condition2, DateTime? startDate, DateTime? endDate)
{
    if (condition1.HasValue && startDate.HasValue && endDate.HasValue)
    {
        return Database.Set<User>().Where(x => x.Condition1 == condition1.Value && x.Date > startDate.Value && x.Date <= endDate.Value).ToList();
    }

    if (condition1.HasValue && condition2.HasValue)
    {
        return Database.Set<User>().Where(x => x.Condition1 == condition1.Value && x.Condition2 == condition2.Value).ToList();
    }

    if (condition1.HasValue)
    {
        return Database.Set<User>().Where(x => x.Condition1 == condition1.Value).ToList();
    }

    .... and the list goes on
}
Run Code Online (Sandbox Code Playgroud)

如果我将来再添加一个条件,这很快就会变得臃肿.

c# linq asp.net-mvc ef-code-first

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

在Response.Redirect上删除正文中的Object Moved HTML

我的代码中有一个简单的重定向:

public ActionResult Redirect()
{
    return Redirect("http://url.com");
}
Run Code Online (Sandbox Code Playgroud)

我注意到响应包括响应正文中的以下html:

HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Location: http://url.com
Server: Microsoft-IIS/7.0
Date: Tue, 24 Jul 2012 18:53:52 GMT
Content-Length: 198

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://url.com">here</a>.</h2>
</body></html>
Run Code Online (Sandbox Code Playgroud)

有没有办法从响应正文中删除html?我希望Content-Length在响应主体中没有任何内容时为零.

.net c# asp.net asp.net-mvc

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

使用洋葱架构使用多个 API 和 Web 服务

我目前正在使用洋葱架构设置 Visual Studio 解决方案。我对如何构建解决方案有很好的理解,但我遇到了一些麻烦。我的解决方案正在使用多个 API。这些 API 使用 WCF、Soap Web 服务和 RESTSharp for REST 服务使用。我不确定如何构建它。

最大的困惑是围绕 REST 服务,因为这不仅使用 RESTSharp,还使用一些用于序列化的 POCO 类。我也有:

ApiResult<T> where T is any of the POCO classes.
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是创建 Infrastructure.RestSharp,我将在其中实现所有都返回 ApiResult 的接口,但问题是我将这些 POCO 类和 ApiResult 放在哪里?由于接口正在使用它们,它们将不得不进入 Core 中的某个地方,但是将它们放在哪里比较合适?

WCF 和肥皂服务怎么样?我会创建一个 Infrastructure.WebServices 吗?

c# design-patterns domain-driven-design onion-architecture

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

EF代码首先4.1一对多双向设置

我有以下代码:

modelBuilder.Entity<User>().HasMany(x => x.Items).WithRequired();
Run Code Online (Sandbox Code Playgroud)

模型看起来像

public class User
{
    public long Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Item> Items { get; set; }
}

public class Item    
{
    public long Id { get; set; }
    public string Title { get; set; }

    public virtual User User { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当EF为我生成数据库时,我最终在Items表(User_Id和User_Id1)中有两个外键而不是一个.我如何配置这个,所以只为我创建了一个密钥?

出于测试目的,我从Item类中删除了User,在这种情况下,配置工作正常,只创建了一个键.

ef-code-first entity-framework-4.1

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

使用Linq PredicateBuilder嵌套或使用

我使用谓词构建器编写以下代码:

IEnumerable<int> ids= new List<int> { 47, 48 };

var predicate = PredicateBuilder.False<Customer>();

predicate = predicate.And(x => x.CreatedAt >= fromDate && x.CreatedAt <= toDate);

foreach (var id in ids)
{
    predicate = predicate.Or(x => x.Source.Id == id);
}

var result = Database.Set<Customer>().AsExpandable()
                                     .Where(predicate)
                                     .ToList();
Run Code Online (Sandbox Code Playgroud)

生成的SQL看起来像(只是WHERE子句):

WHERE ([Filter6].[SourceId] IN (@p__linq__0,@p__linq__1))
AND ([Filter6].[CreatedAt] >= @p__linq__2)
AND ([Filter6].[CreatedAt] <= @p__linq__3)',
N'@p__linq__0 int,
@p__linq__1 int,
@p__linq__2 datetime2(7),
@p__linq__3 datetime2(7)',
@p__linq__0=48,
@p__linq__1=48,
@p__linq__2='2012-02-07 21:59:55.0437985',
@p__linq__3='2012-02-07 22:04:55.5748288'
Run Code Online (Sandbox Code Playgroud)

它看起来像id在SQL中被分配了两次.不知道为什么?

linq predicatebuilder

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