我正在尝试使用Entity Framework 4,POCO和Code-Only设置项目.
在实体框架中导航属性的类型是否可以作为接口?
我有一个"任务"课程.可以将任务分配给用户或组,每个用户或组由单独的类表示并存储在单独的表中.这些类看起来像这样:
public class User : IAssignable
{
public string Name { get; set; }
public int ID { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
public class Group : IAssignable
{
public string Name { get; set; }
public int ID { get; set; }
public string Manager { get; set; }
public string Department { get; set; }
}
public class Task
{
public …Run Code Online (Sandbox Code Playgroud) 在使用SQLite和NHibernate成功之后,我很高兴使用它来进行Entity Framework Code First测试.
如果您有一些示例连接字符串并设置演示,这将是很好的,并节省一点时间从忙碌的一天.
非常感谢.
编辑:
值得一提的是,在通过EF"数据上下文"应用crud操作时,我在调试期间收到此错误:
无法确定"System.Data.SQLite.SQLiteConnection"类型连接的提供程序名称.
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="DataContext"
connectionString="Data Source=:memory:;Version=3;New=True;"
providerName="System.Data.SQLite"
/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
希望EF能够以这种方式与SQLite集成.虽然错误消息令人担忧,但可能并非如此.
我在以下场景中遇到了db生成问题:
1.cs First.Entities命名空间中的项目实体maped到First_Project表.
namespace First.Entities
{
#region using section
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity.ModelConfiguration;
using System.Diagnostics.CodeAnalysis;
#endregion
[Table("First_Project")]
public class Project
{
[Key]
public int Id
{
get;
set;
}
[Required]
[MaxLength(1000)]
public string Name
{
get;
set;
}
}
}
Run Code Online (Sandbox Code Playgroud)
2.cs在Second.Entities命名空间中的项目实体maped到Second_Project表.
namespace Second.Entities
{
#region using section
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity.ModelConfiguration;
using System.Diagnostics.CodeAnalysis;
#endregion
[Table("Second_Project")]
public class Project
{
[Key]
public int Id
{
get;
set;
}
[Required]
[MaxLength(1000)]
public string Name
{
get;
set;
} …Run Code Online (Sandbox Code Playgroud) 在过去,在LinqPad中将连接设置为具有EF模型的自定义程序集很容易.Linqpad寻找一个基于System.Data.Objects.ObjectContext哪个不存在的
如何(如果有的话)使他们的模型组件与LinqPad兼容.
我正在使用实体框架Code First CTP5,我试图找到一种方法来添加一个约定来改变外键名称的生成方式.这是一个例子:
public class Lead
{
public int Id {get; set;}
// A lot of other fields
public virtual User AssignedTo { get; set; }
}
public class User
{
public int Id {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
潜在客户可以与用户相关联.在Leads表的DB for AssignedTo中生成的字段称为UserId.
我的模型完全独立于实体框架.所以我不想使用EF的属性.我想在可能的情况下使用约定将字段命名为AssignedToUserId.
我在Silverlight应用程序中使用Silverlight 5 Beta SDK和EntityFramework 4.1.
我将尝试创建两个表'Author'和'Book'.在SQL中,应该有第三个(连接)表,它在Author和Book之间建立多对多关系(一个作者可以编写很多书,一本书可以从许多作者那里编写).
这是我到目前为止所得到的:
namespace CodeFirst.Models.Web
{
public class Author
{
public Author()
{
this.Books = new HashSet<Book>();
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
public ICollection<Book> Books { get; set; }
}
public class Book
{
public Book()
{
this.Authors = new HashSet<Author>();
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
public ICollection<Author> Authors { …Run Code Online (Sandbox Code Playgroud) 我在数据库中有一个不能为null的列,我想将其设置为在数据库中具有默认值.问题是实体框架似乎自己创建了一个默认值(例如,int => 0),并完全忽略了数据库中的默认值约束.
有没有办法禁用这个实体框架的默认值?
我有以下两种型号
public class Account
{
public int Id { get; set; }
public string Name { get; set; }
public int CurrentPeriodId { get; set; }
[ForeignKey("CurrentPeriodId")]
public virtual Period CurrentPeriod { get; set; }
public virtual ICollection<Period> Periods { get; set; }
}
public class Period
{
public int Id { get; set; }
public int AccountId { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public virtual Account Account …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用EntityFramework 4.1(CodeFirst)更新我之前保存的对象
Job类具有以下属性......
public class Job
{
[key]
public int Id { get; set; }
public string Title { get; set; }
public Project Project { get; set; }
public JobType JobType { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
初始创建工作正常,但更新只提交对字符串的更改.
如果我改变的子对象,例如在JobType从地产JobTypeA到JobTypeB-更改不会犯...
我不打算对JobType进行更改 - 仅限于Job.
using (var context = new JobContext())
{
context.Jobs.Attach(job);
context.Entry(job).State = EntityState.Modified;
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
看看SQL Profiler - 甚至没有为更新发送ID - 但它们是用于初始插入!
我有一张桌子:
public class TestModel
{
public int Id { get; set; }
public string UserId { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望UserId列是外键,Mvc Membership的用户ID列.我怎么能得到这个?
我的IdentityModels:
public class ApplicationUser : IdentityUser
{
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection")
{
}
}
Run Code Online (Sandbox Code Playgroud) code-first ×10
c# ×5
.net ×1
asp.net-mvc ×1
entity ×1
linqpad ×1
many-to-many ×1
silverlight ×1
sqlite ×1