有没有办法控制桥实体创建的表的名称?现在,如果我运行这个:
public class Foo
{
public Int32 FooId { get; set; }
public virtual ICollection<Bar> Bars { get; set; }
}
public class Bar
{
public Int32 BarId { get; set; }
public virtual ICollection<Foo> Foos { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
得到的桥表名为BarFoo,任何使它成为FooBar的方法?
从EF 4.2升级到迁移到EF 4.3并启用迁移,重新启动Visual Studio和所有内容,每当我尝试调用Update-Database/Add-Migration时,我得到:
System.Reflection.TargetInvocationException:调用目标抛出了异常.---> System.ArgumentException:
参数不正确.(来自HRESULT的异常:0x80070057(E_INVALIDARG))
---内部异常堆栈跟踪结束---
在System.RuntimeType.InvokeDispMethod(String name,BindingFlags invokeAttr,Object target,Object [] args,Boolean [] byrefModifiers,Int32 culture ,String [] namedParameters)
位于System.RuntimeType.InvokeMember(String name,BindingFlags bindingFlags,Binder binder,Object target,Object [] providedArgs,ParameterModifier [] modifiers,CultureInfo culture,String [] namedParams),
位于System.Management.Automation. ComMethod.InvokeMethod(PSMethod方法,Object []参数)
Update-Database:调用目标抛出了异常.
在行:1 char:1
+ update-database
+ ~~~~~~~~~~~~~~~
+ CategoryInfo:OperationStopped :(异常有b ...一个调用.:String)[Update-Database] ,RuntimeException
+ FullyQualifiedErrorId:调用目标抛出了异常.,Update-Database
我尝试清理整个项目,删除ef和migration和packages文件夹并从头开始执行它仍然是同样的错误!
任何人都面临同样的错误?或者有解决方案吗?
我目前正在尝试首次设置ASP.Net MVC 3应用程序.我知道我在使用Ruby on Rails做了什么,但完全失去了ASP.Net.我希望该应用程序创建数据库,但不知道我做错了什么.我有一个名为ssDB的空数据库构建.我已经设置了connectionStrings并构建了Model类.根据我已经阅读的所有内容,当我去运行应用程序时它应该创建数据库,但它看起来不那样.
我得到的缩写错误是:
InnerException: System.Data.SqlClient.SqlException Message=Invalid object name 'dbo.Users'. Source=.Net SqlClient Data Provider ErrorCode=-2146232060 Class=16 LineNumber=1 Number=208 Procedure="" Server=TESTSVR01 State=1
我博客的模型:
namespace AlexPeta_2.Models
{
public class Article
{
public int ArticleId { get; set; }
public string Title { get; set; }
public string Text { get; set; }
public char Published { get; set; }
public DateTime CreatedDate { get; set; }
public char AllowComment { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
}
namespace AlexPeta_2.Models
{
public class Comment
{
public int CommentId { get; …Run Code Online (Sandbox Code Playgroud) 我在cshtml文件中写下以下语句: -
@{
string categoryName = string.Format("{0}->{1}", label.Category.Parent.Name,
label.Category.Name);
@categoryName
}
Run Code Online (Sandbox Code Playgroud)
并得到一个例外Object reference null.
另一方面,同样适用于Controller.cs文件和即时窗口.我知道它与延迟加载有关.
它背后是否有任何概念,它在Cshtml文件中的表达式中不起作用?
谢谢
lazy-loading razor ef-code-first entity-framework-4.1 asp.net-mvc-3
我有两个POCO对象:
public class Product
{
public int ProductID { get; set; }
public string Name { get; set; }
public int CategoryID { get; set; }
public virtual Category Category { get; set; }
}
public class Category
{
public int CategoryID { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
很明显,当我创建产品时,我可以为该产品选择一个类别.或者更确切地说,需要一个类别.
我无法在没有明确选择类别的情况下创建产品,并且我的数据以这样的方式构建,我不想创建"无类别"类别条目.
我已经考虑过在这两个表之间进行多对多映射......但是如果可能的话我想避免使用它.
我要么做些傻事,要么就是没有办法做到这一点.
任何帮助,将不胜感激!
我在代码中有这个类层次结构:
[Table("A")]
public class A : IIdentification
{
public int id { get; set; }
}
[Table("B")]
public class B : A
{
//some properties here
public Aid { get; set;}
ForeignKey("Aid");
public A A { get; set; }
}
[Table("C")]
public class C : B
{
//some properties here
public Bid { get; set; }
ForeignKey("Bid");
public B B { get; set; }
}
[Table("D")]
public class D : C
{
public Cid { get; set;}
ForeignKey("Cid");
public C …Run Code Online (Sandbox Code Playgroud) 我正在使用EntityFramework v4.3.1并通过继承DbContext并覆盖OnModelCreating()来通过代码构建我的模型.我有一个名为Companies的表和一个名为Messages的表.该消息表有一个空的外键Messages.CompanyId.设置此选项后,特定邮件将与特定公司相关联.当此字段为空时,消息将与所有公司相关联.
我的问题是我不知道如何在OnModelCreating()方法中表达这种行为.如果我做:
modelBuilder.Entity<Message>().HasRequired(o => o.Company).WithMany(o => o.Messages).Map(o => o.MapKey("CompanyId"));
Run Code Online (Sandbox Code Playgroud)
我成功获得公司的导航属性,以便我可以执行TestCompany.Messages之类的调用,并获得与特定公司关联的消息列表.但我还需要返回所有空消息.
怎么能实现这一目标?
使用以下连接字符串,一切正常.
<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
我最近在我的本地机器上安装了SQL Server 2012 Express进行测试,但我无法建立连接.这是我使用Windows身份验证的连接字符串.
<add name="ApplicationServices" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=testdb;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
我是一个全力以赴的人,他尽力搜索论坛,但我无法将我的解决方案推迟到"有类似头衔的问题"部分.任何帮助是极大的赞赏.
所以,我已经按照ADO.NET团队博客的指示尝试制作一个小型测试项目.我仔细检查了一切.它似乎不起作用,并一直说连接字符串丢失.
http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx
步.1构建此UserModels.dll.在dll,App.Config文件中,edmx生成了这个连接字符串:(在创建它时点击'test'按钮,它成功连接,并从'UserDatabase'生成所有表的edmx图)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="UserModelsContainer" connectionString="metadata=res://*/UserModels.csdl|res://*/UserModels.ssdl|res://*/UserModels.msl;provider=System.Data.SqlClient;provider connection string="data source=MyDesktop\SQL2008;initial catalog=UserDatabase;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
第2步然后我做了一个测试项目:
class UnitTetst1 ....
TestMethod1()....
using (var db = new UserModelsContainer()) {
int i = db.Users.Count(); // <---expecting '0' for a new db, but I get an exception
}
Run Code Online (Sandbox Code Playgroud)
---------问题在这里-----------------
步骤3.运行测试.然后我得到一个错误InvalidOperationException像这样:
"No connection string named 'UserModelsContainer' could be found in the application config file."
Run Code Online (Sandbox Code Playgroud)
好像DbContext不知道在哪里从App.Config中取出connectionStrings?
请帮帮忙~~
ef-code-first ×10
asp.net-mvc ×2
c# ×2
code-first ×1
dbcontext ×1
lazy-loading ×1
poco ×1
razor ×1