我首先使用Entity Framework 4.3.1代码进行显式迁移.如何在实体配置类或迁移中添加列的描述,以便最终作为SQL Server中列的描述(例如2008 R2)?
我知道我可以编写一个DbMigration类的扩展方法,该方法将迁移事务中的sql迁移操作注册sp_updateextendedproperty或sp_addextendedproperty过程调用,并在迁移Up方法中创建表后调用该扩展.但是,我还没有发现一种优雅的内置方式吗?拥有迁移的更改检测逻辑可以获取的属性并在scaffolded迁移中生成appropritate方法调用会很好.
有没有什么办法来补种一的LocalDB表使用EF?
我不想使用这个SQL命令:
DBCC CHECKIDENT('TableName', RESEED, 0)
Run Code Online (Sandbox Code Playgroud)
仅供参考:我使用的是EF 6.1.
非常感谢.
我正在尝试使用LINQ执行DELETE,这将生成单个查询.
我是这样做的:
// NorthwintEntities is an ADO.NET Entitity Data Model
var northwindEntities = new NorthwindEntities();
northwindEntities.Order_Details.Delete(o => o.Order_ID == 11076);
Run Code Online (Sandbox Code Playgroud)
这是我的扩展:
public static class EntityExtensions
{
private static Regex rxTableName = new Regex(@"^FROM\s+(?<table>\[[^\]]*\](\.\[[^\]]*\]){0,2})\s+AS\s+(?<alias>\[[^\]]*\])", RegexOptions.Multiline);
public static void Delete<T>(this ObjectSet<T> entity, Expression<Func<T, bool>> expression) where T : EntityObject
{
var selectQuery = entity.Where(expression).Select(x => 1);
string selectQueryString = ((ObjectQuery)selectQuery).ToTraceString();
string deleteQueryString = ConvertSqlSelectToDelete(selectQueryString);
entity.Context.ExecuteStoreCommand(deleteQueryString);
}
private static string ConvertSqlSelectToDelete(string selectQuery)
{
if (selectQuery.IndexOf(" JOIN ") > -1)
{
throw new Exception("Query …Run Code Online (Sandbox Code Playgroud) 有没有什么办法可以让我们在实体框架中加入两个实体的基础"多对多表".
例如,如果我们有Product和Order实体,我们如何获得连接Product和Order表的底层连接表Product_Order.
任何帮助,将不胜感激.
我正在使用Entity Framework 4.1和Code First方法.我能够获取我的实体的存储模型类型和列名:
var items = context.ObjectContext.MetadataWorkspace.GetItems<EntityType>(DataSpace.SSpace);
foreach (var i in items)
{
Console.WriteLine("Table Name: {0}", i.Name);
Console.WriteLine("Keys:");
foreach (var key in i.KeyMembers)
Console.WriteLine("\t{0} ({1})", key.Name, key.TypeUsage.EdmType.FullName);
Console.WriteLine("Members:");
foreach (var member in i.Members)
Console.WriteLine("\t{0} ({1})", member.Name, member.TypeUsage.EdmType.FullName);
}
Run Code Online (Sandbox Code Playgroud)
我需要的是获取实体映射到的真实表名.有不同的方法来指定(通过使用Fluent-API .ToTable(),DataAnnotation [TableAttribute]).
有没有通用的方法来获得这些信息?
我正在尝试获取实体的SQL表名称.当我使用MetadataWorkspace查询时,我从对象或存储空间获取大量信息.但架构名称和表名称不存在.
我尝试查询CSpace和SSpace的所有EntityType对象,我可以看到两者都正确列出,但我无法弄清楚如何从CSpace获取SSpace.
所以说我在对象模型中有一个名为User的类型 - 如何在数据库中找到带有模式名称(tkp.User)的表名?
有没有办法做到这一点?
我在我的MVC应用程序中使用EF 5数据库第一种方法.我的所有表都使用一个名为Deleted的字段,这是一个标记记录被删除的布尔字段.
我试图摆脱每次查询我的数据库时必须检查Deleted == false的要求.这种非常简单的方法是在edmx文件中使用条件映射,其中EF始终返回未删除的数据.这一切都很好.
但是,这个条件映射的问题是,当我想允许用户从地址簿中删除例如地址的某些记录时,我无法访问EF中的删除字段,因为我在条件映射中使用它,因此我必须寻找另一个允许用户删除记录的选项.
我想的方法是创建一个处理删除查询的存储过程,并在我想要删除记录时调用它.
有没有更好的方法呢?是否可以使删除字段可访问,即使它在条件映射中使用?