我需要先使用实体模型将系统连接到oracle.我有一个实体"Entity1"的模型.顾名思义,"MyBool"是一个布尔属性.

我成功地从模型生成了sql脚本并在oracle数据库上运行它.
然后我有这个代码:
static void Main(string[] args)
{
Model1Container context = new Model1Container();
Entity1 entity = context.Entity1.FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
此代码抛出此异常:
指定的架构无效.错误:Model1.msl(8,12):错误2019:指定的成员映射无效.类型'Model1.Entity1'中成员'MyBool'的类型'Edm.Boolean [Nullable = False,DefaultValue =]'与'OracleEFProvider.number不兼容[Nullable = False,DefaultValue =,Precision = 1,Scale = 0 ''成员'MyBool''类型'Model1.Store.Entity1'.
我读了很多帖子,很多人说要添加:
<oracle.dataaccess.client>
<settings>
<add name="bool" value="edmmapping number(1,0)" />
</settings>
</oracle.dataaccess.client>
Run Code Online (Sandbox Code Playgroud)
在配置文件中(在我的情况下,它是一个控制台应用程序然后app.config).但这并没有改变任何事情.实际上,我可以在此参数上设置任何值,并且错误将完全相同.看起来这个参数没有被读取.
然后有人说:将Oracle.DataAccess DLL添加到项目中.我做了什么,结果是一样的.
我知道关于这个话题有很多线索,但是他们中的任何一个都帮助了我,我不知道还能做什么.请注意,我的实际应用程序模型已在Sql Server上生产.
我做了一些测试并发现,Item导航属性仅在处理上下文/创建新上下文时才有效.
DataContext context = new DataContext();
Order ord = context.Orders.FirstOrDefault();
ord.OrderItem.Add(new OrderItem() { ItemId = 8, Quantity = 2, DateCreated = DateTime.Now });
// At this point, both Order and Item navigation property of the OrderItem are null
context.SaveChanges();
// After saving the changes, the Order navigation property of the OrderItem is no longer null, but points to the order. However, the Item navigation property is still null.
ord = context.Orders.FirstOrDefault();
// After retrieving the order from the context …Run Code Online (Sandbox Code Playgroud) 我正在使用模型优先方法创建一个新数据库,我想在类型的表中添加一列,System.Drawing.Color但我在属性列表中没有这个选项.
有没有办法比使用更多的数据类型?
像其他几个一样,我试图实现ASP.NET Identity Model First.一旦你尝试,错误,气氛,搜索和解决,一切都很好.我想.
也可以看看:
行动方案,总结如下:
我已经解决了出现的问题(直到最新一步).为了完整起见,我将描述它们.
使用默认的标识上下文
一切正常:表格创建,我可以注册和登录.然而,这不是我想要的情况:我想使用Model First方法.
使用EF连接字符串使用自定义的第一个上下文模型
修改CreatePerOwinContext,使其使用我的Model First上下文:
public void ConfigureAuth(IAppBuilder app)
{
app.CreatePerOwinContext(CustomModelFirstDbContext.Create);
Run Code Online (Sandbox Code Playgroud)
和ApplicationUserManager一起使用Model First上下文:
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<CustomModelFirstDbContext>()));
Run Code Online (Sandbox Code Playgroud)
结果是:
'/'应用程序中的服务器错误.
实体类型ApplicationUser不是当前上下文的模型的一部分.
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.InvalidOperationException:实体类型ApplicationUser不是当前上下文的模型的一部分.
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
堆栈跟踪:[InvalidOperationException:实体类型ApplicationUser不是当前上下文的模型的一部分.]
将"普通"连接字符串与自定义的Model First上下文一起使用
WebApplication1.dll中出现"System.Data.Entity.Infrastructure.UnintentionalCodeFirstException"类型的异常,但未在用户代码中处理
附加信息:如果在Code First模式下使用,则使用T4模板为Database First和Model First开发生成的代码可能无法正常工作.要继续使用Database First或Model First,请确保在执行应用程序的配置文件中指定了Entity Framework连接字符串.要使用从Database First或Model First生成的这些类,使用Code First添加任何其他配置,使用属性或DbModelBuilder API,然后删除引发此异常的代码.
所以,我认为我需要默认的Identity上下文来使用Identity,并使用自定义的Model First上下文来处理其他所有内容.不是首选的解决方案,但可以接受.
正常项目和快速健全性检查测试项目都与AspNetUserRoles表具有相同的问题.这是一个联结表,当在EF设计器中导入它时,一切正常.你不会看到它,因为它是一个多对多的关系,当检查AspNetRole和AspNetUser之间的关联时它看起来不错.
设计师和制图细节:

但是,在生成sql脚本时,EF会修改密钥. …
entity-framework ef-model-first asp.net-mvc-5 asp.net-identity asp.net-identity-2
我在VS2010的项目中使用Entity Framework Model First.
我想知道是否有办法password在.edmx窗口或属性窗口中设置要加密的字段.我不想更改生成的.cs文件,因为每次修改模型时都会覆盖它.
sql-server entity-framework visual-studio-2010 ef-model-first
我使用Model First在EF中更新模型时遇到一些问题.
我已经用尽了添加迁移的建议(通常使用Code First完成).
程序包管理器控制台打印该消息
不支持从使用Database First或Model First创建的DbContext创建DbModelBuilder或编写EDMX.EDMX只能从不使用现有DbCompiledModel创建的Code First DbContext中获取.
我也试过这个建议
但是当我点击"运行自定义工具"时没有任何反应
有关如何更新模型以反映已添加到数据库的更改的任何建议.
我知道在使用模型优先开发时,您可以使用t4模板生成的部分类来添加元数据.例如
public partial class Address
{
public int Id { get; set; }
public string Street1 { get; set; }
public string Street2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后在一个单独的文件中,我做:
[MetadataType(typeof(AddressMetadata))]
public partial class Address {
}
internal sealed class AddressMetadata {
[Display(Name = "Street")]
public string Street1 { get; set; }
[Display(Name = "Street (cont.)")]
public string Street2 { …Run Code Online (Sandbox Code Playgroud) 自VS 2010以来,我一直在使用Entity Framework模型.当我构建项目时,EF会生成一个包含所有实体的Model.Designer.cs文件.此设计器文件还包含添加到EDMX文件中的实体的文档.
当我在VS 2012中创建新的EF模型第一个项目时,Model.tt文件被添加到我的EDMX文件中.此T4模板为模型中的每个实体生成单个文件.遗憾的是,EDMX文件中的文档未在生成的代码中使用.
我非常喜欢记录我的模型,因此IntelliSense在使用时会显示出来.到目前为止我找到的唯一解决方法是删除Model.tt和生成的类文件,然后重新启动我的EDMX文件上的代码生成.这将恢复到我在VS 2010中使用的行为.但是,我希望每个实体都有一个单独的文件.
有没有办法(最好使用VS工具而不必修改VS附带的任何文件)在生成的单个类文件中包含EDMX文件中的文档?
编辑:为了进一步说明我的问题,这是一个简单的例子.
假设我的模型看起来像这样:
我在Id属性的Properties窗口中突出显示了我输入文档的部分.
这是EDMX文件中实体的样子:
<EntityType Name="Entity1">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Type="Int32" Name="Id" Nullable="false" annotation:StoreGeneratedPattern="Identity" >
<Documentation>
<Summary>This is documentation for the ID property.</Summary>
</Documentation>
</Property>
</EntityType>
Run Code Online (Sandbox Code Playgroud)
Model.tt生成的类(Entity1.cs)如下所示:
public partial class Entity1
{
public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是当我为我的模型打开代码生成时,这就是实体在Model.Designer.cs中的样子:
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="Model1", Name="Entity1")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Entity1 : EntityObject
{
#region Factory Method
/// <summary>
/// Create a new …Run Code Online (Sandbox Code Playgroud) code-generation entity-framework visual-studio-2012 ef-model-first
我正在尝试使用Node和Edge为图形创建数据模型.如果Edge不包含任何属性,我可以简单地创建从节点到自身的多对多关联.但是我想在Edge上存储一些属性,例如距离.我试图创建另一个实体,但没有找到一种方法来声明Edge和Node之间的关系.在Model First中有可能吗?怎么样?
我对Entity Framework很陌生:我从数据库优先模型开始,维护一个使用EF和普通旧SQL混合创建的应用程序.
我创建了自己的新的DB-first模型,我很好.今天我老板让我添加一个新实体.缺少外键简化了方案.
我在图中创建了我的新实体(它由我刚创建的复杂实体的三个实例组成)但现在我必须创建一个增量DB脚本来创建新表.我应该这样做,既为MySQL和SQL Server,但让我们开始第二.
所以现在我看到我有一个编译问题"没有实体映射Entity",如果我使用"从数据库更新模型"命令,我看不到将更改推送到DB的选项,但这听起来是正确的,因为单词"from".
好的,我试图从右键菜单中单击"表映射",我找到了将实体映射到表的选项.我打算在"添加表或视图"字段中键入新表名,然后......等待!我只能选择现有的表格
我理解它仅适用于单个表,因此我可以简单地"从模型生成数据库"以获取完整的SQL脚本,找到我想要的表,运行到DB并"从DB更新模型",以便EF看到表格,但是
我想了解如何使用Entity Framework创建增量脚本.这是我的问题.
c# sql-server ef-database-first ef-model-first entity-framework-6.1