标签: entity-framework-5

具有Entity Framework 5/Visual Studio 2010的EDMX中的表值函数

如果可以在具有Entity Framework 5 RC/Visual Studio 2010的EDMX中使用表值函数?

我看不到EDMX设计师的选项,我觉得设计师在.net 4.5中?我的怀疑是否正确?或者也许在Visual Studio 11中?

我真的无法将我们的项目升级到.net 4.5,还有另一种使用表值函数的方法(可能手动修改edmx吗?).

附加信息:

这篇关于msdn的博客文章有助于确认不兼容性:

某些功能仅在编写面向.NET 4.5的应用程序时可用.这包括枚举支持,空间数据类型,表值函数和性能改进.如果您的目标是.NET 4.0,您仍然可以获得所有错误修复和其他小改进.

然而有趣的是,本教程讨论了直接修改EDMX以增加对TVF的支持,但它似乎是一个旧的测试版.XML intellisense也没有找到教程中讨论的元素,但可能是因为它使用了不同的模式.不幸的是,我已经没时间尝试将教程应用到新的EF5 Release候选版本中,但我有兴趣知道是否有人有运气.

.net-4.0 visual-studio-2010 .net-4.5 entity-framework-5 visual-studio-2012

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

复合键字段的最佳顺序是什么?

假设我有一个包含以下字段的表:

  • LeagueID
  • MatchID
  • 一些数据

联盟将举办许多比赛.通常每个联盟都将使用自己的本地数据库,因此LeagueID字段在此本地数据库的所有记录中都是相同的.联盟每年一次将其数据上传到国家当局,然后联盟ID将有必要对具有相同MatchID的比赛进行识别.

实现复合主键的最佳方法是什么(使用EF Fluent API)?

Entity<Match>.HasKey(match=>new {match.LeagueID,match.MatchID})
Run Code Online (Sandbox Code Playgroud)

要么

Entity<Match>.HasKey(match=>new {match.MatchID,match.LeagueID})
Run Code Online (Sandbox Code Playgroud)

对于人眼来说,联盟 - 比赛的顺序是合乎逻辑的,因为它将把特定联盟的比赛保持在一起.但我明白,在编写复合键时,出于性能原因首先使用最具辨别力的字段非常重要.

database-design entity-framework composite-key entity-framework-5

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

代码第一会员提供商

如何首先使用代码将EF 5.0与成员资格提供程序集成?

我有自己的数据库架构,我想用它来注册用户等.

membership-provider code-first asp.net-mvc-4 entity-framework-5 simplemembership

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

实体框架代码首先是内部连接,没有主外键关系

我在用Entity Framework 5 code first.我试图在2个表之间设置内部联接,我不知道如何去做.这两个表没有主键/外键关联,但它们具有公共字段域.

tblServer表:

Server_ID
ServerName
Domain
...
...
Run Code Online (Sandbox Code Playgroud)

tblCommandExecutionServer表:

ServerListID
ServerName
Domain
...
...
Run Code Online (Sandbox Code Playgroud)

这就是我如何配置2个表来映射到某些实体类:

ServerConfiguration类:

class ServerConfiguration : EntityTypeConfiguration<Server>
{
     internal ServerConfiguration()
     {
          this.ToTable("tblServer");
          this.Property(x => x.Id).HasColumnName("Server_ID");
          this.Property(x => x.Name).HasColumnName("ServerName");
     }
}
Run Code Online (Sandbox Code Playgroud)

CommandExecutionServerConfiguration类:

class CommandExecutionServerConfiguration : EntityTypeConfiguration<CommandExecutionServer>
{
     internal CommandExecutionServerConfiguration()
     {
          this.ToTable("tblCommandExecutionServer");
          this.Property(x => x.Id).HasColumnName("ServerListID");
          this.Property(x => x.Name).HasColumnName("ServerName");
     }
}
Run Code Online (Sandbox Code Playgroud)

服务器类:

public class Server : IEntity
{
     public int Id { get; set; }

     public string Name { get; set; }

     public string …
Run Code Online (Sandbox Code Playgroud)

ado.net entity-framework entity-framework-4 entity-framework-4.1 entity-framework-5

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

如何根据LINQ两个字段的组合选择不同的?

如何仅选择一行中只有两个值的明显组合的记录?

例如,说我有以下内容:

Name     |     Age     |     Height
------------------------------------
Joe          19               99
Kim          19               76
Joe          20               88
Joe          19               69
Run Code Online (Sandbox Code Playgroud)

我怎么能写一个LINQ表达式来只选择具有相同NameAND 的行Age

我想: var count = context.people.Where(p => (p.age && p.name).Distinct());var count = context.people.Where(p => (p.age.Distinct() && p.name.Distinct()));

这样做的正确方法是什么?

linq asp.net where entity-framework-5

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

.Net的实体框架

我正在使用最新的Entity Framework和DBContext.我有一个结果集,我想转换为逗号分隔值.我在VB DataTable中使用DataTables做了类似的事情来进行CSV提取.我有QuoteName方法工作.我还得到了使用foreach工作的GetCSV方法的衍生物.问题是它比DataTable的可比代码要慢得多.所以我希望有人会有一些建议.

    public static string GetCSV(this IQueryable entity)
    {
        if (entity == null)
        {
            throw new ArgumentNullException("entity");
        }
        Type T = entity.ElementType;
        var props = T.GetProperties(BindingFlags.Public | BindingFlags.Instance);
        string s = string.Empty;
        int iCols = props.Count();

        try
        {
            s += string.Join(",", (from int ii in Enumerable.Range(0, iCols)
                                   select props[ii].Name.QuoteName("[]")).ToArray());
            s += Environment.NewLine;
            foreach (var dr in entity)
            {
                s += string.Join(",", (from int ii in Enumerable.Range(0, iCols)
                                       select
                                           props[ii].GetValue(dr)
                                                    .ToString()
                                                    .QuoteName("\"\"", ",")).ToArray());
                s += Environment.NewLine;
            } …
Run Code Online (Sandbox Code Playgroud)

c# linq export-to-csv entity-framework-5

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

在一个控制器中使用两个型号?

我目前有一个带有主页的应用程序,该主页根据它们"创建"的日期显示十个电影的列表,或者输入到数据库中.我还想根据每部电影的评级显示前十部电影的列表.有没有办法传入另一个模型或改变我当前的ViewModel来做到这一点?这是我的家庭控制器的索引部分:

    public ActionResult Index()
    {
        var model =
            _db.Movies
                .OrderByDescending(m => m.DateEntered)
                .Take(10)
                .Select(m => new MovieListViewModel 
                {
                    Id = m.Id,
                    Title = m.Title,
                    Genre = m.Genre,
                    ReleaseDate =  m.ReleaseDate,
                    CountOfReviews = m.Reviews.Count()
                });

        return View(model);

    }
Run Code Online (Sandbox Code Playgroud)

传入的ViewModel:

public class MovieListViewModel
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Genre { get; set; }

    [Display(Name="Year Released")]
    public DateTime ReleaseDate { get; set; }
    public int CountOfReviews { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc-4 entity-framework-5

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

EntityFramework t4模板 - XML文档

我的EDMX文件存在以下问题.

在其中我已经为属性和实体编写了一些文档,但是我的EF 5的t4模板并没有生成这些值.

我想要的结果应该是

public class Person
{
    /// <summary>
    /// Hello World Summary!!
    /// </summary>
    /// <remarks>
    /// Hello World Remarks!!
    /// </remarks>
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但我只能得到

public class Person
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果不是这样,我为什么还能在edmx文件中设置文档属性.

c# t4 entity-framework xml-comments entity-framework-5

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

如何使用ASP.net MVC,Entity Framework和Razor进行补丁更新模型

我设法使用asp.net MVC创建基本的CRUD操作

但是我的领域有问题Status,CreatedOn而且CreatedBy.

我希望在创建操作期间填充这些字段,并且在编辑操作期间不会更新这些字段,但我不想对这些字段使用@HiddenFor,因为您可以编辑DOM并在POST请求之前仍然更新这些信息.

基本上我想要的是使用POST请求中发送的任何数据来修补我的模型.因此,我不必担心编辑操作中正在更改我不想修改的字段.

这是我的模型和动作的代码.

模型

[Table("Account")]
public class Account
{
    #region Properties

    [Key]
    public int AccountID { get; set; }

    [Required]
    [StringLength(50)]
    [DisplayName("Account Name")]
    public string Name { get; set; }

    [Required]
    [DisplayName("Time Offset")]
    [Range(-24,24)]
    public decimal TimeOffset { get; set; }

    [StringLength(20)]
    [DisplayName("Status")]
    public string Status { get; set; }

    public DateTime CreatedOn { get; set; }

    public int CreatedBy { get; set; }

    public DateTime? ModifiedOn { get; set; } …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc razor entity-framework-5

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

在.Where()中使用.SingleOrDefault()将引发以下异常: - 用户代码未处理System.NotSupportedException

我正在使用asp.net mvc-4 Web应用程序,我正在使用Entity Framework 5.现在我有以下模型方法: -

 public IQueryable<TMSStorageDevice> CustomerSD(int customerid)
        {


            var customerSiteIds = entities.SiteDefinitions.Where(a => a.AccountDefinitions1.SingleOrDefault().ORG_ID == customerid).Select(a2 => a2.SITEID).ToList();
        }
Run Code Online (Sandbox Code Playgroud)

现在这会引发以下错误: -

System.NotSupportedException was unhandled by user code
  HResult=-2146233067
  Message=The methods 'Single' and 'SingleOrDefault' can only be used as a final query operation. Consider using the method 'FirstOrDefault' in this instance instead.
  Source=System.Data.Entity
  StackTrace:
       at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SingleTranslatorBase.TranslateUnary(ExpressionConverter parent, DbExpression operand, MethodCallExpression call)
       at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.UnarySequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
       at System.Data.Objects.ELinq.ExpressionConver
Run Code Online (Sandbox Code Playgroud)

我能够通过替换(SingleOrDefault())解决这个问题: -

a.AccountDefinitions1.SingleOrDefault().ORG_ID
Run Code Online (Sandbox Code Playgroud)

with(FirstOrDefault()): -

a.AccountDefinitions1.FirsteOrDefault().ORG_ID …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc entity-framework entity-framework-5

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