标签: entity-framework-5

缺少Entity Framework中枚举的列

我已经使用Entity Framework 5构建了代码优先模型.这些类有几个枚举.

我首先将模型类放在原型ASP.NET MVC项目中.我还加了

Database.SetInitializer(new DropCreateDatabaseAlways<dbType>());
Run Code Online (Sandbox Code Playgroud)

命令到global.asax.cs文件.

在Visual Studio中运行MVC应用程序产生了我在SQL Server(2008 R2)中想要的数据库模式.(使用枚举的int值列)

然后我将模型代码复制到实际使用它的解决方案中,该解决方案被分成几个项目,一个具有EF代码,另一个是ASP.NET MVC部分.

我还在global.asax.cs中添加了相同的初始化程序

现在,当我运行项目时,我确实在数据库中获得了正确的表,但由于某些奇怪的原因,表中缺少枚举列!

如何让EF生成枚举列?

database sql-server enums entity-framework entity-framework-5

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

EF 5 - 模型第一次数据库迁移:发布到远程生产服务器后更改模型?

我正在开发MVC 5,EF 5.0代码.我使用文件共享文件夹发布项目.

当模型更改时,我可以使用数据库迁移来更新开发的localDb.但是,在将项目发布到远程服务器之后,它显示了使用完整SQL数据库服务器的生产Web服务器上所需更改的模型和迁移所需的错误.

我知道我可以删除生产服务器上的数据库并让它重新创建数据库.但是,表中已有用户输入的数据.

有没有办法在不重新创建数据库的情况下应用模型/数据库更改?

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

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

EF外键迁移会引发错误

我有两张桌子:

[Table("Ticket_Admins")]
public class TicketAdmin
{
    public TicketAdmin()
    {
        Name = new Record();
        Name.IsRevisioned = false;
        Name.IsVisible = true;
        Name.Category = typeof(TicketAdmin).Name;
    }
    [Key]
    public int Id { get; set; }
    public virtual Record Name { get; set; }
    public virtual TicketPost Post { get; set; }
    public virtual UserProfile User { get; set; }
}

[Table("UserProfile")]
public class UserProfile
{
    private string _email;

    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]       
    public int UserId { get; set; }
    public string Email 
    {
        get { return …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-5

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

如何阅读EF 5中的NotMapped属性?

我无法弄清楚如何访问标记为NotMapped的属性,以便我可以打印它.当我尝试访问它时,我得到了

LINQ to Entities不支持指定的类型成员'LinkAddress'.仅支持初始值设定项,实体成员和实体导航属性.

我的LINQ查询是:

(from n in db.Navigation
                                  join s in db.Sections on n.SectionID equals s.SectionID
                                  join sl in db.Locale_Sections on s.SectionID equals sl.SectionID
                                  where n.Category == "Books" && sl.CultureID == 1
                                  select new
                                  {
                                      s.LinkAddress,
                                      sl.Title,
                                  }).ToList();
Run Code Online (Sandbox Code Playgroud)

我对Section的上下文是:

    [Table("Section")]
public class Section
{
    [Key, Required, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Int16 SectionID { get; set; }

    public Int64 LogoFileID { get; set; }

    [ForeignKey("LogoFileID")]
    public virtual File File { get; set; }

    [Required, MaxLength(15), Column(TypeName = "varchar")]
    public string RouteName { …
Run Code Online (Sandbox Code Playgroud)

linq webforms asp.net-4.5 entity-framework-5

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

为什么ModelState.IsValid不能正常用于外键约束?

我有一个MeterPeak实体,这个实体有一个MeterReading实体作为外键(包含在问题的底部).MeterReading实体具有由MeterSiteId和DateTime组成的复合主键.

所以我的理解是,在我的MeterPeak实体中,我必须输入一个MeterSiteId和一个与现有MeterReading实体匹配的DateTime,以满足外键约束.我不应该被允许链接到不存在的外键.

但是,在MeterPeakController的编辑操作中,我有以下代码

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(MeterPeak meterpeak)
    {
        if (ModelState.IsValid)
        {
            unitOfWork.MeterPeakRepository.Update(meterpeak);
            unitOfWork.Save();
            return RedirectToAction("Index");
        }
        ViewBag.MeterSiteId = new SelectList(unitOfWork.MeterSiteRepository.Get(b => true), "Id", "Location", meterpeak.MeterSiteId);
        return View(meterpeak);
    }
Run Code Online (Sandbox Code Playgroud)

当我输入与现有仪表读数不匹配的MeterSiteId和DateTime并尝试保存时,我希望ModelState.IsValid检查返回false,但它不会.它只有在到达unitOfWork.save()行时才会失败,并且在将此更改保存到dbcontext时出错

The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_dbo.MeterPeaks_dbo.MeterReadings_MeterSiteId_DateTime"
Run Code Online (Sandbox Code Playgroud)

为什么ModelState.IsValid在到达dbcontext.save之前没有找到这个问题?

public class MeterPeak
{
    [Key]
    public int Id { get; set; }

    [ForeignKey("PeakReading"), Column(Order = 1)]
    public int MeterSiteId { get; set; }

    [ForeignKey("PeakReading"), Column(Order = 2)]
    public DateTime DateTime { get; set; }

    public int? Rating { …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-framework ef-code-first entity-framework-5

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

我不明白EF5 dbContext.Entry(entity).Reload()方法应该如何工作?

在这个例子中:

using System;
using System.Collections.Generic;
using dbModel;
using System.Linq;
using System.Data.Entity.Infrastructure;


namespace WinApp
{
    public partial class Form1 : Form
    {
        private dbEntities dbc;
        public IQueryable<ARTIKLI> art;
        public IQueryable<ART_GRUPE> grp;

        public Form1()
        {
            InitializeComponent();
            dbc = new dbEntities();            
        }


        private void GetData()
        {
            art = from a in dbc.ARTIKLIs
                        select a;

            grp = from g in dbc.ART_GRUPE
                        select g;

            artikliBindingSource.DataSource = art.ToList();
            artGrupeBindingSource.DataSource = grp.ToList();
        }


        private void Form1_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
        {
            dbc.SaveChanges();
        }


        private void loadData_Click(object sender, EventArgs …
Run Code Online (Sandbox Code Playgroud)

c# orm winforms entity-framework-5

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

如何查看LINQ发送到我的数据库的SQL文本?

我有以下存储库:

public class GenericRepository<T> : IRepository<T> where T : class
{
    public GenericRepository(DbContext dbContext)
    {
        if (dbContext == null) 
            throw new ArgumentNullException("An instance of DbContext is required to use this repository", "context");
        DbContext = dbContext;
        DbSet = DbContext.Set<T>();
    }

    protected DbContext DbContext { get; set; }

    protected DbSet<T> DbSet { get; set; }

    public virtual IQueryable<T> Find(Expression<Func<T, bool>> predicate)
    {
        return DbSet.Where<T>(predicate);
    }

    public virtual IQueryable<T> GetAll()
    {

        return DbSet;
    }
Run Code Online (Sandbox Code Playgroud)

和服务:

    private IRepository<Subject> _subjectsRepository;
    private IRepository<Content> _contentsRepository;

    public ContentService(IRepositoryProvider …
Run Code Online (Sandbox Code Playgroud)

c# linq sql-server entity-framework entity-framework-5

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

为什么我不能在LINQ中的where子句中使用dictionary ["key"]?

我正在运行一个简单的LINQ查询:

var user = (from u in context.Users
          where u.Email == dictionary["email"]
          select u).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到这个例外:

LINQ to Entities无法识别方法'System.String get_Item(System.String)'方法,并且此方法无法转换为商店表达式.

如果我使用这个中间步骤,它工作正常.

String myDictionaryItem = dictionary["email"];

var user = (from u in context.Users
          where u.Email == myDictionaryItem
          select u).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

看起来有点奇怪.Net无法想得更快一点.

(免责声明:可能是一些拼写错误,我更改了一些变量名称)

c# linq where-clause entity-framework-5

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

在LINQ中使用条件

如何使用LINQ中的条件重写它?

如果selectID = 0,我希望它运行:

   var products = from p in product.Table
       orderby p.Name
       where (p.stock == stockId)
      select p;        
Run Code Online (Sandbox Code Playgroud)

如果selectID不为零,我希望它运行:

   var products = from p in product.Table
       orderby p.Name
       where (p.stock == stockId) &&        
             (p.Id == selectID)
      select p;             
Run Code Online (Sandbox Code Playgroud)

这下面有效,但是我必须使用"虚拟"第二个条件(p.hidden == false)才能使三元运算符工作:

   var products = from p in product.Table
       orderby p.Name
       where (p.stock == stockId) &&        
      (selectID != 0 ? p.Id == selectID : p.hidden == false)
      select p;             
Run Code Online (Sandbox Code Playgroud)

有没有办法摆脱(p.hidden == false),因为逻辑中不需要它,只是让操作员工作.谢谢

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

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

重新获取模型状态错误消息

我有以下行动方法: -

 public ActionResult AddServerToRack(AddServerToRack s)
        {

            if (ModelState.IsValid)
            {
                try
                {
                   // code goes here
                }
            }
            var errorDesc = ModelState.Select(a=>a.Value.Errors.Select(a2=>a2.ErrorMessage)).ToList();
            string desc = "";
            foreach (var i in errorDesc)
            {
                desc = desc + " " + i.ToString();
            }
            return Json(new { IsSuccess = false, description = desc}, JsonRequestBehavior.AllowGet);
        }
Run Code Online (Sandbox Code Playgroud)

我想要做的是获取模型状态内的所有错误消息,并将它们作为json对象发送.但目前我无法在我的操作方法结束时使用foreach获取错误消息的描述.所以任何人都可以建议,我怎么能得到所有的模型状态错误信息描述.谢谢

entity-framework modelstate entity-framework-5 asp.net-mvc-5

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