你好我正在开始一个ASP.Net的项目,我正在关注微软的训练营.我试图向我发布的api做一个REST请求,然后我得到了下一个例外:
类型为"PlataformaTest.Models.AnswerModel"的属性"QuestionId"上的ForeignKeyAttribute无效.在依赖类型'PlataformaTest.Models.AnswerModel'上找不到导航属性'OptionModel'.Name值应该是有效的导航属性名称.","exceptionType":"System.InvalidOperationException"
顺便说一下,我没有逐字逐句地遵循训练练习,我改变了一些名字,所以,试图找出从零开始的所有过程.
任何帮助和指导都非常感谢.谢谢.
我正在尝试将旧的应用程序迁移到新的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
我正在尝试使用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)
在上述情况下是否可以使用投影?如果我使用选择运算符,它会与投影具有相同的效果吗?或者仍然会从数据库服务器获取所有元素,然后在应用程序服务器中选择指定的元素?
我的工作有两个类的模型,Product和Transaction.
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运算符作为集合导航属性
编辑以澄清:我想要实现的是实际上没有加载 TransactionId和Customer何时Transaction加载.
我正在创建一个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 …
所以我有这个模型类:
[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,value,test财产不属于其中。DbSet我像这样填充我的
public DbSet<items> items { get; set; }
奇怪的是,如果我添加类似的东西,它不会崩溃public List<string> test { get; set; }。
我应该怎么办?我本来想添加一个bool?属性。
编辑:我正在考虑创建一个将继承模型的新类,但我必须重新映射/重新填充它。
我有以下代码.为什么我的导航属性(课程中的要求和要求中的课程)为空?
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
我有以下型号的问题:
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约束.
有人可以解释如何删除项目页面(可以是另一个项目页面中的页脚或页眉)?
我正在使用实体框架来管理我的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',没有定义键.
如何让我的表有一个主键由这三个外键组成?
我已经看过这个问题一百万次,但我遇到的每一个建议我似乎已经覆盖了.
我的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# ×9
asp.net ×2
asp.net-core ×2
.net-core ×1
asp.net-mvc ×1
asqueryable ×1
dispose ×1
foreign-keys ×1
mongodb ×1
sql ×1