行为[MaxLength]和[StringLength]属性有什么区别?
据我所知(除了[MaxLength]可以验证数组的最大长度)这些是相同的,有点多余?
我的数据库中有一个名为SEntries的表(参见下面的CREATE TABLE语句).它有一个主键,几个外键,没有什么特别之处.我的数据库中有许多类似于那个表,但由于某种原因,该表最终在EF代理类上有一个"Discriminator"列.
这是在C#中声明类的方式:
public class SEntry
{
public long SEntryId { get; set; }
public long OriginatorId { get; set; }
public DateTime DatePosted { get; set; }
public string Message { get; set; }
public byte DataEntrySource { get; set; }
public string SourceLink { get; set; }
public int SourceAppId { get; set; }
public int? LocationId { get; set; }
public long? ActivityId { get; set; }
public short OriginatorObjectTypeId { get; set; }
}
public class …Run Code Online (Sandbox Code Playgroud) 没有Detach(object entity)上DbContext.
我是否能够首先在EF代码上分离对象?
我正在进入实体框架,但我不确定我是否错过了代码优先方法中的关键点.
我正在使用基于https://genericunitofworkandrepositories.codeplex.com/的代码的通用存储库模式,并创建了我的实体.
但是当我尝试访问或修改实体时,我会遇到以下情况:
System.InvalidOperationException:实体类型Estate不是当前上下文的模型的一部分.
当我尝试从我的存储库访问它时会发生这种情况:
public virtual void Insert(TEntity entity)
{
((IObjectState)entity).ObjectState = ObjectState.Added;
_dbSet.Attach(entity); // <-- The error occurs here
_context.SyncObjectState(entity);
}
Run Code Online (Sandbox Code Playgroud)
数据库(./SQLEXPRESS)创建得很好,但实体(表)不是在启动时创建的.
我想知道我是否需要显式设置实体的映射?EF不能自己做到这一点吗?
我的实体是:
public class Estate : EntityBase
{
public int EstateId { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的背景如下:
public partial class DimensionWebDbContext : DbContextBase // DbContextBase inherits DbContext
{
public DimensionWebDbContext() :
base("DimensionWebContext")
{
Database.SetInitializer<DimensionWebDbContext>(new CreateDatabaseIfNotExists<DimensionWebDbContext>());
Configuration.ProxyCreationEnabled = false;
}
public new IDbSet<T> Set<T>() where T : class …Run Code Online (Sandbox Code Playgroud) 我正在使用Entity Framework 4.1中引入的DbContext和Code First API.
该数据模型使用的基本数据类型,如string和DateTime.我在某些情况下使用的唯一数据注释是[Required],但这不是任何DateTime属性.例:
public virtual DateTime Start { get; set; }
Run Code Online (Sandbox Code Playgroud)
该的DbContext子类也很简单,看起来像:
public class EventsContext : DbContext
{
public DbSet<Event> Events { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Event>().ToTable("Events");
}
}
Run Code Online (Sandbox Code Playgroud)
在初始化设置日期在模型中有意义的值在今年或明年.
但是,当我运行初始化程序时,我收到此错误context.SaveChanges():
将datetime2数据类型转换为日期时间数据类型会导致超出范围的值.该语句已终止.
我不明白为什么会发生这种情况,因为一切都很简单.我也不确定如何解决它,因为没有edmx文件可以编辑.
有任何想法吗?
我首先在我的网站上使用实体框架代码,我只是想知道是否有任何方法来调试迁移代码.你知道,比如设置断点和类似的东西.
我正在使用Package Manager Console使用update-database更新数据库.
谢谢
entity-framework ef-code-first ef-migrations entity-framework-5
有没有办法使用代码优先在属性/列上创建索引,而不是使用新的IndexAttribute?
我试图找出如何使用EF代码First 4.1 RC获得复合键.
目前,我正在使用[Key] Data Annotation,但我无法指定多个键.
如何指定复合键?
这是我的例子:
public class ActivityType
{
[Key]
public int ActivityID { get; set; }
[Required(ErrorMessage = "A ActivityName is required")]
[StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")]
public string ActivityName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我需要"ActivityName"也是一个关键.当然,我可以围绕这个编码,但那不是很好的数据库设计.
我正在使用EF5 beta1,而我之前能够运行"更新数据库".现在我关闭了Visual Studio,我无法让它运行.我收到以下错误:
术语"更新 - 数据库"未被识别为cmdlet,函数,脚本文件或可操作程序的名称.检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试.在行:1 char:16 + Update-Database <<<< -verbose + CategoryInfo:ObjectNotFound:(Update-Database:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException
我试图重新安装EF5b1并且虽然成功(已安装),但"更新数据库"仍然无效.
谁能帮忙???
entity-framework ef-code-first ef-migrations entity-framework-5
程序包管理器控制台中的Update-Database失败.我使用了Entity Framework 6.x和代码优先方法.错误是
"数据库中已经有一个名为'AboutUs'的对象."
我怎么解决这个问题?
internal sealed class Configuration
: DbMigrationsConfiguration<Jahan.Blog.Web.Mvc.Models.JahanBlogDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;
}
protected override void Seed(Jahan.Blog.Web.Mvc.Models.JahanBlogDbContext context)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我的DbContext是:
public class JahanBlogDbContext : IdentityDbContext<User, Role, int, UserLogin, UserRole, UserClaim>
{
public JahanBlogDbContext()
: base("name=JahanBlogDbConnectionString")
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<JahanBlogDbContext>());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Comment>().HasRequired(t => t.Article).WithMany(t => t.Comments).HasForeignKey(d => d.ArticleId).WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().ToTable("User");
modelBuilder.Entity<Role>().ToTable("Role");
modelBuilder.Entity<UserRole>().ToTable("UserRole");
modelBuilder.Entity<UserLogin>().ToTable("UserLogin");
modelBuilder.Entity<UserClaim>().ToTable("UserClaim");
}
public virtual DbSet<Article> Articles { get; set; }
public …Run Code Online (Sandbox Code Playgroud) database entity-framework ef-code-first ef-migrations entity-framework-6