小编oct*_*ccl的帖子

实体框架.net:"Name值应该是有效的导航属性名称."

你好我正在开始一个ASP.Net的项目,我正在关注微软的训练营.我试图向我发布的api做一个REST请求,然后我得到了下一个例外:

类型为"PlataformaTest.Models.AnswerModel"的属性"QuestionId"上的ForeignKeyAttribute无效.在依赖类型'PlataformaTest.Models.AnswerModel'上找不到导航属性'OptionModel'.Name值应该是有效的导航属性名称.","exceptionType":"System.InvalidOperationException"

顺便说一下,我没有逐字逐句地遵循训练练习,我改变了一些名字,所以,试图找出从零开始的所有过程.

任何帮助和指导都非常感谢.谢谢.

c# asp.net entity-framework foreign-keys

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

WithOptional with Entity Framework Core

我正在尝试将旧的应用程序迁移到新的EF Core,但我找不到像以下这样的关系:

  HasRequired(o => o.Document).WithOptional(o => o.CancelNote);
Run Code Online (Sandbox Code Playgroud)

有一些扩展方法吗?我在文档上找不到.

HasRequired我认为这是可能的替代HasOne()方法,但如何对WithOptional()

另外,根据文档,实体不使用virtual关键字来创建导航属性,延迟加载将如何工作?

entity-framework entity-framework-core .net-core asp.net-core

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

在MongoDB C#驱动程序2.2中使用AsQueryable进行投影

我正在尝试使用MongoDB C#驱动程序2.2版.我正在尝试使用投影,因为我不想检索文档中的所有元素.我发现一种方法是使用项目运算符和find运算符,如下所示:

collection.Find(key => key.Index == 1).Project<MyClass>(Builders<MyClass>.Projection.Include(key => key.Name).Include(key => key.Index)). ToEnumerable ();
Run Code Online (Sandbox Code Playgroud)

但是,我有兴趣使用AsQueryable API以及where运算符,如下所示:

collection.AsQueryable().Where(key => key.Index == 1);
Run Code Online (Sandbox Code Playgroud)

在上述情况下是否可以使用投影?如果我使用选择运算符,它会与投影具有相同的效果吗?或者仍然会从数据库服务器获取所有元素,然后在应用程序服务器中选择指定的元素?

c# asqueryable mongodb mongodb-.net-driver

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

如何仅在Entity Framework 6.1中加载子对象的某些字段?

我的工作有两个类的模型,ProductTransaction.

public class Product
{
    [DataMember]
    public Guid ProductId {get; set;}

    [DataMember]
    public virtual ICollection<Transaction> Transactions { get; set; }
}

public class Transaction
{
    [DataMember]
    public Guid TransactionId {get; set;}

    [DataMember]
    public DateTimeOffset Date { get; set; }

    [DataMember]
    public String Customer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何进行检索产品及其交易日期的查询?我试过类似的东西

var product = db.Products.Include(p => p.Transactions.Select(t => new { t.Date })).Where(p => p.ProductId = productId);
Run Code Online (Sandbox Code Playgroud)

但它引发了一个例外:

Include路径表达式必须引用在类型上定义的导航属性.使用虚线路径作为参考导航属性,使用Select运算符作为集合导航属性

编辑以澄清:我想要实现的是实际上没有加载 TransactionIdCustomer何时Transaction加载.

c# linq-to-entities entity-framework entity-framework-6

5
推荐指数
2
解决办法
3463
查看次数

DbContext已被处理,没有任何意义

我正在创建一个C#Web应用程序,在那里我可以添加公司以及公司拥有分支机构的地方.一家公司可以拥有多个分支机构.在一个地方可能有几家公司.所以之间的关系Companies,并Territory多对多.

这是我目前的公司模型,

public class CompanyModel
{

    [HiddenInput(DisplayValue = false)]
    public long CompanyId { get; set; }

    [Display(Name = "Company Name")]
    [Required(ErrorMessage = "* required")]
    public string CompanyName { get; set; }

    [Display(Name = "Phone Number")]
    [Required(ErrorMessage = "* required")]
    [RegularExpression(@"\d*", ErrorMessage = "Not a valid phone number")]
    public string PhoneNo { get; set; }


    [Display(Name = "Post Code List", Prompt = "eg. BA5, BS16")]
    public string PostCodeList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

它有一个文本框,它将采用逗号分隔的字符串.所以我用foreach …

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

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

如何在模型类上添加与数据库无关的属性?

所以我有这个模型类:

[Table("items")]
public class items
{
        public int id { get; set; }
        public string text { get; set; }
        public string value { get; set; }
   //   public int test { get; set; } crashes
}
Run Code Online (Sandbox Code Playgroud)

我使用实体框架。我的桌子有id,text,valuetest财产不属于其中。DbSet我像这样填充我的

public DbSet<items> items { get; set; }

奇怪的是,如果我添加类似的东西,它不会崩溃public List<string> test { get; set; }

我应该怎么办?我本来想添加一个bool?属性。

编辑:我正在考虑创建一个将继承模型的新类,但我必须重新映射/重新填充它。

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

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

EF 7:如何以一对多关系加载相关实体

我有以下代码.为什么我的导航属性(课程中的要求和要求中的课程)为空?

    public class Course : AbsEntity {
            [Key]
            public string Title { get; set; }
            public string Term { get; set; }
            public int Year { get; set; }
            public string CourseId { get; set; }        
            public double GradePercent { get; set; }        
            public string GradeLetter { get; set; }     
            public string Status { get; set; }
            public int ReqId { get; set; }

            public Requirement Requirement { get; set; }
        }

    public class Requirement : AbsEntity {
            [Key]
            public …
Run Code Online (Sandbox Code Playgroud)

c# asp.net entity-framework entity-framework-core asp.net-core

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

实体框架级联删除 - FOREIGN KEY约束

我有以下型号的问题:

public class ProjectPage
{
    [Key]
    public Guid Id { get; set; }

    public Guid? HeaderId { get; set; }
    public ProjectPage Header { get; set; }

    public Guid? FooterId { get; set; }
    public ProjectPage Footer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在模型创建我有这个:

modelBuilder.Entity<ProjectPage>().HasOptional(p => p.Header).WithMany().HasForeignKey(p => p.HeaderId).WillCascadeOnDelete(true);
modelBuilder.Entity<ProjectPage>().HasOptional(p => p.Footer).WithMany().HasForeignKey(p => p.FooterId).WillCascadeOnDelete(true);
Run Code Online (Sandbox Code Playgroud)

但我无法更新数据库.我在Package Manager控制台中遇到以下错误:

在表'ProjectPages'上引入FOREIGN KEY约束'FK_dbo.ProjectPages_dbo.ProjectPages_FooterId'可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.

有人可以解释如何删除项目页面(可以是另一个项目页面中的页脚或页眉)?

c# entity-framework entity-framework-6

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

在实体框架中将多个外键设置为主键

我正在使用实体框架来管理我的sql-server-ce数据库.我希望我的表的主键由其他表的几个外键组成.我期待这样的事情发挥作用:

class Bill{
    [Key]
    public virtual Customer Customer { get; set; }
    [Key]
    public virtual Era Era { get; set; }
    [Key]
    public virtual CompanyCode CompanyCode { get; set; }
    public long? Amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但它导致以下数据库迁移错误:

BillPrinter.Bill :: EntityType'Bill'没有定义键.定义此EntityType的键.Bills:EntityType:EntitySet'Bills'基于类型'Bill',没有定义键.

如何让我的表有一个主键由这三个外键组成?

c# sql entity-framework sql-server-ce

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

ObjectContext实例已被释放,无法再使用

我已经看过这个问题一百万次,但我遇到的每一个建议我似乎已经覆盖了.

我的MVC解决方案中有实体框架,我有一个'存储库',它试图检索MyObjects 的集合:

public static List<MyObject> GetMyObjects()
{
   using (var context = new MyEntities())
   {
       return context.MyObjects.Include("Contact").OrderByDescending(o => o.Date).ToList();
   }
}
Run Code Online (Sandbox Code Playgroud)

我将此方法称为控制器操作的一部分,该操作尝试将其序列化:

public JsonResult All()
{
   return Json(MyRepository.GetMyObjects(), JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ObjectContext实例已被释放,不能再用于需要连接的操作.

我不知道在哪里开启这个,我欣赏实体框架'懒加载'关系数据集,如果需要它们,我感谢尝试序列化整个集合确实会尝试加载这些(在使用声明),但我有"包括".

我试过的

我已经尝试了'包含',我也确保没有其他关联是MyObject该类的一部分(即我没有其他Include()的可写).

c# asp.net-mvc dispose entity-framework

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