Entity Framework 学习总结之四:对象服务介绍使用

2023-05-16

System.Data.Objects (System.Data.Entity.dll)

该命名空间包含一些类,用于提供对对象服务的核心功能的访问。 这些类使您可以藉由作为实体类型实例的强类型 CLR 对象来查询、插入、更新和删除数据。 对象服务支持针对实体数据模型 (EDM) 中定义的类型进行的语言集成查询 (LINQ) 和 ESQL 查询。 对象服务将返回的数据具体化为对象,并将对象更改传播回数据源。 它还提供了用于跟踪更改、将对象绑定到控件以及处理并发问题的功能。

在 EntityClient 提供程序的基础上,实体框架添加了另一组抽象,以便允许针对对象而非 EntityClient 返回的非类型化数据记录进行开发。这就是通常被认为是 ORM 的层,它可以生成在数据模型中所定义类型的 CLR 实例并允许开发人员使用 LINQ 或 ESQL 查询这些对象。它也恰好是当初众多开发人员在市场中寻找可用的 ORM 技术时最能吸引他们眼球的实体框架层。

对象服务层的高级功能是接受来自应用程序的 ESQL 或 LINQ 查询,然后将查询表达式传递给下面的 EntityClient 并返回 IEnumerable<T>。但是,经过深入的分析后您会发现,对象服务层的中心是代表应用程序与底层数据存储之间的交互会话的 ObjectContext。

ObjectContext 是开发人员在查询、添加和删除其实体实例以及将新状态保存回数据库时用到的主要构造。

如果使用对象服务,则对开发人员而言,跟踪内存中对象所发生的更改的流程以及将这些更改保存回数据库的流程都会得到简化。对象服务使用 ObjectStateManager 不但会跟踪内存中实例的当前状态,还会跟踪每个实例从存储库中检索出来时的初始状态,从而使实体框架可以在将数据推送回数据库时应用最优的并发操作。通过对 ObjectContext 调用 SaveChanges 方法,可以轻松地保存所跟踪的更改并将其推送回数据存储库。

注:http://msdn.microsoft.com/zh-cn/library/system.data.objects.aspx

ObjectContext

ObjectContext 封装 .NET Framework 和数据库之间的连接。此类用作“创建”、“读取”、“更新”和“删除”操作的网关。 它是以对象(这些对象是概念模型中定义的实体类型的实例)的形式与数据进行交互的主要类。

ObjectContext 类的实例封装以下内容:

· 数据库的连接,以 EntityConnection 对象的形式封装。

· 描述该模型的元数据,以 MetadataWorkspace 对象的形式封装。

· 用于管理缓存中持久保存的对象的 ObjectStateManager 对象。

成员参考:http://msdn.microsoft.com/zh-cn/library/system.data.objects.objectcontext_members.aspx

构造函数

ObjectContext(EntityConnection) :使用给定连接初始化 ObjectContext 类的新实例。 在构造过程中,从 EntityConnection 对象提取元数据工作区。

ObjectContext(String) :使用给定的连接字符串和默认的实体容器名称初始化 ObjectContext 类的新实例。

常用方法

AcceptAllChanges:接受在对象上下文中对对象所做的所有更改。

AddObject :将对象添加到对象上下文。

ApplyCurrentValues<TEntity> :将标量值从提供的对象复制到 ObjectContext 中具有相同键的对象中。

ApplyOriginalValues<TEntity> :将标量值从提供的对象复制到 ObjectContext 中具有相同键的对象的原始值集中。

Attach :在对象具有实体键时将对象或对象图附加到对象上下文。

AttachTo :将对象或对象图附加到特定实体集中的对象上下文。

CreateDatabase :使用当前数据源连接和 StoreItemCollection 中的元数据创建数据库。

CreateDatabaseScript :生成数据定义语言 (DDL) 脚本,该脚本为 StoreItemCollection 中的元数据创建架构对象(表、主键、外键)。

CreateEntityKey :为特定对象创建实体键,如果实体键已存在,则返回该键。

CreateObject<T> :创建并返回所请求的类型的实例。

CreateObjectSet<TEntity>() :创建新的 ObjectSet<TEntity> 实例,该实例用于查询、添加、修改和删除指定实体类型的对象。

CreateObjectSet<TEntity>(String) :创建新的 ObjectSet<TEntity> 实例,该实例用于查询、添加、修改和删除具有指定类型和指定实体集名称的对象。

CreateProxyTypes :为提供的枚举中的每个类型生成可用于 Entity Framework 的等效类型。

CreateQuery<T> :使用指定查询字符串在当前对象上下文中创建 ObjectQuery<T>。

DatabaseExists :检查在当前数据源连接中指定为数据库的数据库是否在数据源上存在。

DeleteDatabase :删除在当前数据源连接中指定为数据库的数据库。

DeleteObject :将对象标记为待删除。

Detach :从对象上下文移除对象。

DetectChanges :确保 ObjectStateEntry 更改与由 ObjectStateManager 跟踪的所有对象中的更改进行同步。

Equals(Object) :确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)

ExecuteFunction(String, ObjectParameter[]) :执行在数据源中定义并在概念模型中表示的存储过程或函数,丢弃该函数返回的任何结果,并返回执行该函数影响的行数。

ExecuteFunction<TElement>(String, ObjectParameter[]) :使用指定的参数,执行在数据源中定义并在概念模型中映射的存储过程或函数。 返回类型化的 ObjectResult<T>。

ExecuteFunction<TElement>(String, MergeOption, ObjectParameter[]) :使用指定的参数和合并选项,执行在数据源中定义并在概念模型中表示的给定存储过程或函数。 返回类型化的 ObjectResult<T>。

ExecuteStoreCommand :利用现有连接对数据源直接执行任意命令。

ExecuteStoreQuery<TElement>(String, Object[]) :对数据源直接执行查询,此查询将返回类型化结果的序列。

ExecuteStoreQuery<TEntity>(String, String, MergeOption, Object[]) :对数据源直接执行查询,此查询将返回类型化结果的序列。 指定实体集和合并选项,以便能够将查询结果作为实体进行跟踪。

GetHashCode :用作特定类型的哈希函数。 (继承自 Object。)

GetObjectByKey :返回具有指定实体键的对象。

公共方法 静态成员 :GetObjectType :返回与指定类型的代理对象关联的 POCO 实体的实体类型。

LoadProperty(Object, String) :通过指定的导航属性并使用默认合并选项,显式加载与提供的对象相关的对象。

LoadProperty(Object, String, MergeOption) :通过指定的导航属性并使用指定的合并选项,显式加载与提供的对象相关的对象。

LoadProperty<TEntity>(TEntity, Expression<Func<TEntity, Object>>) :通过指定的 LINQ 查询并使用默认合并选项,显式加载与提供的对象相关的对象。

LoadProperty<TEntity>(TEntity, Expression<Func<TEntity, Object>>, MergeOption) :通过指定的 LINQ 查询并使用指定的合并选项,显式加载与提供的对象相关的对象。

Refresh(RefreshMode, IEnumerable) :使用数据源中的数据更新对象上下文中的对象集合。

Refresh(RefreshMode, Object) :使用数据源中的数据更新对象上下文中的对象。

SaveChanges() :将所有更新保存到数据源并重置对象上下文中的更改跟踪。

SaveChanges(SaveOptions) :使用指定的 SaveOptions 将所有更新保存到数据源。

Translate<TElement>(DbDataReader) :将包含实体数据行的 DbDataReader 转换为请求的实体类型的对象。

Translate<TEntity>(DbDataReader, String, MergeOption) :在特定的实体集中,使用指定的合并选项将包含实体数据行的 DbDataReader 转换为请求的实体类型的对象。

TryGetObjectByKey :返回具有指定实体键的对象。

属性

CommandTimeout :获取或设置所有对象上下文操作的超时值(以秒为单位)。 null 值表示将使用基础提供程序的默认值。

Connection :获取对象上下文使用的连接。

ContextOptions :获取 ObjectContextOptions 实例,该实例包含影响 ObjectContext 的行为的选项。

DefaultContainerName :获取或设置默认容器名称。

MetadataWorkspace :获取对象上下文使用的元数据工作区。

ObjectStateManager :获取对象上下文用于跟踪对象更改的对象状态管理器。

事件

ObjectMaterialized :当使用数据源中的数据创建新的实体对象(作为查询或加载操作的一部分)时发生。

SavingChanges :在将更改保存到数据源时发生。

增加:AddObject

代码片断:


using (var edm = new NorthwindEntities())
{
	Customers c = new Customers { CustomerID = "notin",CompanyName="Astar"};
	    edm.AddObject("Customers", c);
	int result = edm.SaveChanges();
	Customers addc = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "notin");
	Console.WriteLine("CustomerId={0},CompanyName={1}", addc.CustomerID, addc.CompanyName);
}  

主从添加:

 


using (var edm = new NorthwindEntities())
{
	Categories categorie1 = new Categories { CategoryName = "ASP.NET" };
	Categories categorie2 = new Categories { CategoryName = "SQLServer" };
	Products product1 = new Products { ProductName = "ASP.NET 入门到精通", Discontinued = true };
	Products product2 = new Products { ProductName = "SQLServer 入门到精通", Discontinued = false };
	categorie1.Products.Add(product1);
	categorie2.Products.Add(product2);
	edm.Categories.AddObject(categorie1);
	edm.Categories.AddObject(categorie2);
	edm.SaveChanges();
	Console.WriteLine("LinqToEntities...");
	var categories = from categorie in edm.Categories
	where categorie.CategoryName == "ASP.NET" || categorie.CategoryName == "SQLServer"
	select categorie;
	foreach (var categorie in categories)
	{
		Console.WriteLine("分类: {0}", categorie.CategoryName);
		foreach (var product in categorie.Products)
		{
			Console.WriteLine("产品: {0}", product.ProductName);
		}
	}
	Console.WriteLine("EntitySQL...");
	//var esql = "select value c from Categories as c where exists(c.Products)"; //查询全部
	var esql = @"select value c from Categories as c where c.CategoryName = 'ASP.NET' or c.CategoryName = 'SQLServer'";
	var categoriesESQL = edm.CreateQuery<Categories>(esql);
	foreach (var categorie in categoriesESQL)
	{
		Console.WriteLine("分类: {0}", categorie.CategoryName);
		foreach (var product in categorie.Products)
		{
			Console.WriteLine("产品: {0}", product.ProductName);
		}
	}
}   

删除:DeleteObject

代码片断:


using (var edm = new NorthwindEntities())
{
	Customers c = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "notin");
	    edm.DeleteObject(c);
	int result = edm.SaveChanges();
	Customers addc = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "notin");
	//输出异常,因为已为NULL。
	Console.WriteLine("CustomerId={0},CompanyName={1}", addc.CustomerID, addc.CompanyName);
}  

修改:SaveChanges

代码片断:

 


using (var edm = new NorthwindEntities())
{
	Customers addc = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "notin");
	//addc.CustomerID = "notupdate"; //主键不可修改
	    addc.CompanyName = "Xlovey";
	int result = edm.SaveChanges();
	Customers updatec = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "notin");
	Console.WriteLine("CustomerId={0},CompanyName={1}", updatec.CustomerID, updatec.CompanyName);
}  

结果:

执行SQL语句: ExecuteStoreCommand

代码片断:

 


using (var edm = new NorthwindEntities())
{
	string sqlStr = @"insert into Customers(CustomerID, CompanyName) values (@CustomerID, @CompanyName)";
	var parm = new DbParameter[] {
	new SqlParameter { ParameterName = "CustomerID", Value = "CR"},
	new SqlParameter { ParameterName = "CompanyName", Value="Cnblogs"}
	        };
	int rowCount = edm.ExecuteStoreCommand(sqlStr, parm);
	Console.WriteLine("{0} rows inserted", rowCount.ToString());
	Customers insertC = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "CR");
	Console.WriteLine("CustomerId={0},CompanyName={1}", insertC.CustomerID, insertC.CompanyName);
}  

结果:

执行SQL语句并返回对象:ExecuteStoreQuery<TElement>

代码片断:

 


string sqlStr = "select * from Customers where CompanyName = @CompanyName";
var parm = new DbParameter[] {
new SqlParameter {ParameterName = "CompanyName", Value = "Astar"}};
var customers = edm.ExecuteStoreQuery<Customers>(sqlStr, parm);
foreach (var customer in customers)
{
	Console.WriteLine("{0},{1}",customer.CustomerID, customer.CompanyName);
}  

ObjectStateEntry

维护对象或关系的 EntityState、EntityKey 值和原始值。还管理已修改属性的列表。每个实体类型关系实例都与一个 ObjectStateEntry 实例关联。 仅当对象在 ObjectStateManager 中时,才与 ObjectStateEntry 关联。当具有关系的对象分离时,由 ObjectStateEntry 维护的信息会减少为维护关系所需的信息。一个 ObjectStateEntry 不能有与同一 ObjectStateManager 中的另一个 ObjectStateEntry 相同的键。

无法修改持久性实体的键值。 处于更改、已修改和已删除状态的实体是持久性实体。

成员参考:http://msdn.microsoft.com/zh-cn/library/system.data.objects.objectstateentry_members.aspx

ObjectStateManager

ObjectStateManager 跟踪查询结果,并提供逻辑来合并多个重叠的查询结果。 它还在用户插入、删除或修改对象时执行内存中的更改跟踪,并提供用于更新的更改集。 更改处理器使用此变更集来持久保存修改。

此类通常由 ObjectContext 使用,不直接用于应用程序中。

成员参考:http://msdn.microsoft.com/zh-cn/library/system.data.objects.objectstatemanager_members.aspx

ObjectQuery

ObjectQuery 类支持对实体数据模型 (EDM) 执行 LINQ to Entities 和 Entity SQL 查询。ObjectQuery 还实现了一组查询生成器方法,这些方法可用于按顺序构造等效于 Entity SQL 的查询命令。每个查询生成器方法返回 ObjectQuery 的一个新实例。使用这些方法可以构造查询,而查询的结果集基于前面 ObjectQuery 实例序列的操作。

常用方法和属性

Execute():使用指定的合并选项执行非类型化对象查询。

ToTraceString():返回要对数据源执行的命令。用于追踪所执行的SQL语句,通过此方法我们可以获取所执行的SQL语句,以便我们查看、分析具体执行的SQL语句。

CommandText:返回查询的命令文本。

Execute方法:返回ObjectResult

代码片断:

 


using (var edm = new NorthwindEntities())
{
	string sqlStr = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";
	ObjectQuery<Customers> query = edm.CreateQuery<Customers>(sqlStr);
	ObjectResult<Customers> results = query.Execute(MergeOption.NoTracking);
	foreach (Customers c in query)
	{
		Console.WriteLine(c.CustomerID);
	}
}  

MergeOption有四种值:

· AppendOnly: 只追加新实体,不修改以前获取的现有实体。这是默认行为。

· OverwriteChanges: 将 ObjectStateEntry 中的当前值替换为存储区中的值。这将使用服务器上的数据重写在本地所做的更改。

· PreserveChanges: 将替换原始值,而不修改当前值。这对于在发生开放式并发异常之后强制成功保存本地值非常有用。

· NoTracking: 将不修改 ObjectStateManager,不会获取与其他对象相关联的关系,可以改善性能。

GetResultType方法:返回查询结果的类型信息。

ToTraceString方法:获取当前执行的SQL语句。

Console.WriteLine(query.ToTraceString());

Where方法

代码片断:

 


string sqlStr = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";
ObjectQuery<Customers> query = edm.CreateQuery<Customers>(sqlStr);
//使用ObjectParameter的写法
query = query.Where("it.CustomerId=@customerid");
query.Parameters.Add(new ObjectParameter("customerid", "ALFKI"));
//也可以这样写
//ObjectQuery<Customers> query = edm.Customers.Where("it.CustomerID='ALFKI'");
foreach (var c in query)
{
	Console.WriteLine(c.CustomerID);
}  

First/ FirstOrDefault方法

代码片断:

 


string sqlStr = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";
ObjectQuery<Customers> query = edm.CreateQuery<Customers>(sqlStr);
//如果没有符合条件的数据,那么我们的代码将会抛出异常。
Customers c1 = query.First();
//如果没有符合条件的数据,那么它将返回null。
Customers c2 = query.FirstOrDefault();
Console.WriteLine(c1.CustomerID);
Console.WriteLine(c2.CustomerID);  

Distinct方法:返回不重复的项。

代码片断:


string sqlStr = "select value c.City from NorthwindEntities.Customers as c order by c.CustomerID limit 10";
ObjectQuery<string> query = edm.CreateQuery<string>(sqlStr);
query = query.Distinct();
foreach (string c in query)
{
	Console.WriteLine("City {0}", c);
}  

Except方法:返回两个查询的差集。

代码片断:

 


string sqlStr = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";
ObjectQuery<Customers> query1 = edm.CreateQuery<Customers>(sqlStr);
string sqlStr2 = "select value c from NorthwindEntities.Customers as c where c.Country='UK' order by c.CustomerID limit 10";
ObjectQuery<Customers> query2 = edm.CreateQuery<Customers>(sqlStr2);
query1 = query1.Except(query2);
foreach (Customers c in query1)
{
	Console.WriteLine(c.Country);
}  

Intersect方法:返回两个查询的交集。

代码片断:

 


string sqlStr = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";
ObjectQuery<Customers> query1 = edm.CreateQuery<Customers>(sqlStr);
string sqlStr1 = "select value c from NorthwindEntities.Customers as c where c.Country='UK' order by c.CustomerID limit 10";
ObjectQuery<Customers> query2 = edm.CreateQuery<Customers>(sqlStr1);
query1 = query1.Intersect(query2);
foreach (Customers c in query1)
{
	Console.WriteLine(c.Country);
}  

Union/UnionAll方法:返回两个查询的合集,包括重复项。其中UnionAll必须是相同类型或者是可以相互转换的。

Include方法:可通过此方法查询出与相关的实体对象,相当于子查询,可以分析生成的SQL语句。

代码片断:


string sqlStr = "select value c from NorthwindEntities.Customers as c WHERE c.CustomerID ='HANAR'";
ObjectQuery<Customers> query = edm.CreateQuery<Customers>(sqlStr);
query = query.Include("Orders");
foreach (Customers c in query)
{
	Console.WriteLine("{0},{1}", c.CustomerID, c.Orders.Count);
}
Console.WriteLine(query.ToTraceString());  

 

OrderBy方法

代码片断:


string sqlStr = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";
ObjectQuery<Customers> query = edm.CreateQuery<Customers>(sqlStr);
query.OrderBy("it.country asc,it.city asc");
//也可以这样写
//query.OrderBy("it.country asc");
//query.OrderBy("it.city asc");
foreach (Customers c in query)
{
	Console.WriteLine("{0},{1}", c.Country, c.City);
}  

 

Select方法:只查询需要的数据项。

代码片断:


string sqlStr = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";
ObjectQuery<Customers> query = edm.CreateQuery<Customers>(sqlStr);
ObjectQuery<DbDataRecord> records = query.Select("it.customerid,it.country");
foreach (DbDataRecord c in records)
{
	Console.WriteLine("{0},{1}", c[0], c[1]);
}
Console.WriteLine(records.ToTraceString());
输出结果:
ALFKI,Germany
ANATR,Mexico
ANTON,Mexico
AROUT,UK
BERGS,Sweden
BLAUS,Germany
BLONP,France
BOLID,Spain
BONAP,France
BOTTM,Canada
SELECT TOP (10)
1 AS [C1],
[Extent1].[CustomerID] AS [CustomerID],
[Extent1].[Country] AS [Country]
FROM [dbo].[Customers] AS [Extent1]
ORDER BY [Extent1].[CustomerID] ASC  

 

SelectValue方法:查询结果投影为属性。

代码片断:


string sqlStr = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";
ObjectQuery<Customers> query = edm.CreateQuery<Customers>(sqlStr);
ObjectQuery<string> records = query.SelectValue<string>("it.customerid");
foreach (string c in records)
{
	Console.WriteLine("{0}", c);
}  

 

Skip/Top方法:查询分页,核心利用SQLServer分页函数。

代码片断:


string sqlStr = "select value c from NorthwindEntities.Customers as c order by c.CustomerID ";
ObjectQuery<Customers> query = edm.CreateQuery<Customers>(sqlStr);
query = query.Skip("it.customerid asc", "10");
query = query.Top("10");
foreach (Customers c in query)
{
	Console.WriteLine("{0}", c.CustomerID);
}
Console.WriteLine(query.ToTraceString());  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Entity Framework 学习总结之四:对象服务介绍使用 的相关文章

  • PooledByteBuf分配及回收之十六AdaptiveRecvByteBufAllocator源码解析

    AdaptiveRecvByteBufAllocator 决定了要分配的ByteBuf的容量 RecvByteBufAllocator public interface RecvByteBufAllocator 创建一个新的句柄 句柄提供实
  • 树莓派 ReSpeaker 纯Docker环境 搭建详录

    两个测试镜像 xff1a 1 烧录树莓派3B 43 最新镜像 xff0c 2018 4 18 xff0c 2 2018 08 06 raspbian 4GB for respeaker img https v2 fangcloud com
  • 360度激光雷达测距模块 扫地机器360度扫描 turtlebot3雷达模块

    拆机日本日立和韩国LG合资产360度激光雷达 xff0c 新款 xff0c 体积小巧 xff0c 这款雷达还在turtlebot3小车平台上也在用 xff0c 雷达都是17年新款测试机拆解出来的 xff0c 数量不多 xff0c 成色都很好
  • ros环境搭建-ubuntu16.04系统安装ROS Kinetic

    安装参考 Windows下安装Ubuntu虚拟机及ROS https www jianshu com p 5b4596d40897 2 E5 AE 89 E8 A3 85ros 官网或网盘下载镜像 xff0c 本例PC端安装ubuntu g
  • Ubuntu安装 Docker CE,VNC访问docker图形界面并安装ROS

    从包安装 如果您无法使用Docker的存储库来安装Docker CE xff0c 则可以下载 deb适用于您的发行版的 文件并手动安装 每次要升级Docker CE时都需要下载新文件 转到https download docker com
  • 卸载 Ubuntu 16.04 Kinetic版本ROS

    需要先卸载ros indigo desktop full xff1a sudo apt get remove ros kinetic desktop full 上述命令只是删除ros indigo desktop full而已 xff0c
  • ROS中使用激光雷达HLS-LFCD LDS(Neato XV-11)

    本例激光雷达 HLS LFCD2 参考资料 xff1a https blog csdn net jacka654321 article details 82916688 接线 新款 CP2102模块 USB to TTL USB转串口模块U
  • 树莓派3B+安装Ubuntu Mate 16.04

    1 下载镜像 适用于3B 43 的ubuntu mate 16 04镜像 Ubuntu Mate SD zip xff0c 百度云链接 xff1a https pan baidu com s 1EX nuQReV9IJuQfvkA9XWA
  • 树莓派无人机-资料整理,请做过的大佬,多多指正

    树莓派3B和树莓派3B 43 有了 xff0c 无人机有了 xff0c PX4飞控有了 xff0c 还是一脸懵逼 xff0c 看过老外的树莓派无人机 43 4G图传视频 xff0c 用到拓展版 xff0c 一难买 xff0c 二穷 xff1
  • EasyDL定制化图像识别-图片分类

    EasyDL定制化图像识别 EasyDL是百度推出的定制模型训练平台 xff0c 不需要算法编程 xff0c 通过简单的页面操作 xff0c 和少量数据即可训练定制化的机器学习模型 图像分类 识别一张图中是否是某类物体 状态 场景 可以识别
  • 小程序微商城-商铺管理后台

    主页 xff1a 商城管理 xff1a 微信配置 xff1a 商城设置 xff1a 模板消息 xff1a 运费规则 xff1a 修改条目 xff1a 新增 按重 xff1a 新增 按件 xff1a 包邮规则 xff1a 包邮规则编辑 小程序
  • Spring源码之ConfigurableApplicationContext

    ConfigurableEnvironment xff1a 提供设置活动和默认配置文件以及操作底层属性源的工具 BeanFactoryPostProcessor xff1a 允许自定义修改应用程序上下文的bean定义 xff0c 调整上下文
  • django-web开发框架-使用Ajax

    使用Ajax 使用视图通过上下文向模板中传递数据 xff0c 需要先加载完成模板的静态页面 xff0c 再执行模型代码 xff0c 生成最张的html xff0c 返回给浏览器 xff0c 这个过程将页面与数据集成到了一起 xff0c 扩展
  • stm32在freertos系统下使用串口DMA接收方式对接freemodbus-rtu协议栈

    stm32在freertos系统下使用串口DMA接收方式对接freemodbus rtu协议栈 文章目录 stm32在freertos系统下使用串口DMA接收方式对接freemodbus rtu协议栈前言码农工程师 xff0c 人狠话不多
  • ubuntu子系统 InRelease

    InRelease Err 1 http archive ubuntu com ubuntu bionic InRelease Temporary failure resolving 39 archive ubuntu com 39 Err
  • cmakelist 寻找opencv

    我猜测可能是因为我修改opencv的默认安装路径 xff0c 导致这个问题 xff0c 于是百度CMakeList txt该如何修找opencv4的库 slam十四讲里面 xff0c CMakeList寻找opencv4库的语句 xff1a
  • git clone early EOF解决方法

    在git clone时经常会遇到 early EOF这种错误 fatal The remote end hung up unexpectedly fatal early EOF fatal index pack failed 一般出现这种错
  • opencv检测矩形

    参考 xff1a 使用OpenCV检测图像中的矩形 知来者逆的博客 CSDN博客 opencv检测图像中的矩形 1 得到原始图像之后 xff0c 代码处理的步骤是 xff1a xff08 1 xff09 滤波增强边缘 xff08 2 xff
  • 模型大小 与参数量计算

    1 model size 就是模型的大小 xff0c 我们一般使用参数量parameter来衡量 xff0c 注意 xff0c 它的单位是个 但是由于很多模型参数量太大 xff0c 所以一般取一个更方便的单位 xff1a 兆 M 来衡量 比
  • 多传感器融合track fusion

    这个讲的不错 xff1a 第六篇 无人驾驶的sensor fusion和多目标tracking 知乎 题图来自matlab公开课 sensor fusion and tracking 侵权删 但凡目前自动驾驶公司的一线工程师 xff0c 或

随机推荐

  • windows software develop kit 安装卸载笔记

    windows software develop kit 是visual studio 的开发工具库 安装 xff1a 打开Visual Studio Installer中 xff0c 1 Visual Studio Installer所在
  • px4flow智能光学流动传感器

    PX4Flow 是一款智能光学流动传感器 传感器拥有原生 752 480 像素分辨率 xff0c 计算光学流的过程中采用了4倍分级和剪裁算法 xff0c 计算速度达到250Hz xff08 白天 xff0c 室外 xff09 xff0c 具
  • Spring源码之ConfigurableEnvironment Environment ConfigurablePropertyResolver PropertyResolver

    PropertyResolver xff1a 接口以解析任何底层资源的属性 boolean containsProperty String key 返回给定的属性KEY是否可用于解析 xff0c 如果给定密钥的值不是NULL String
  • pyqt setStyleSheet用法

    设置背景 xff1a self content splitter setStyleSheet 34 QSplitter handle background lightgray 34 设置padding self detailFrame pi
  • [音乐] 随遇而安

    黄霑真的很适合唱这种充满了江湖气息的歌 xff0c 这首歌的经典程度不亚于 沧海一声笑 有兴趣的自己搜来听听吧 人外有人山外有山 不怕拼命怕平凡 有得有失有欠有还 老天不许人太贪 挺起胸膛咬紧牙关 生死容易低头难 就算当不成英雄 也要是一条
  • 视觉SLAM十四讲(一)基础知识

    SLAM是Simultaneous Localization and Mapping的缩写 xff0c 中文 同时定位于地图构建 双目SLAM的距离估计是比较左右眼的图像获得的 xff0c 非常消耗计算资源 xff0c 需要使用GPU和FP
  • E-R概念模型

    E R 概念模型 1 信息的现实世界 我们要管理的客观存在的各种事物 事务之间的相互联系及事物的发生 变化过程 1 实体 Entity 现实世界中存在的可以相互区分的事物或概念称为实体 2 实体的特征 Entity Characterist
  • 数据库设计说明书参考模板

    数据库设计说明书参考模板1 xff0e 引言 1 1 项目名称 1 2项目背景和内容概要 xff08 项目的委托单位 开发单位 主管部门 与其它项目的关系 xff0c 与其他机构的关系等 xff09 1 3相关资料 缩略语 定义 xff08
  • 事件的简单解释:

    事件的简单解释 事件是对象发送的消息 xff0c 以发信号通知操作的发生 操作可能是由用户交互 xff08 例如鼠标单击 xff09 引起的 xff0c 也可能是由某些其他的程序逻辑触发的 引发 xff08 触发 xff09 事件的对象叫做
  • .Net中把图片等文件放入DLL中,并在程序中引用

    摘要 有时我们需要隐藏程序中的一些资源 xff0c 比如游戏 xff0c 过关后才能看到图片 xff0c 那么图片就必须隐藏起来 xff0c 否则不用玩这个游戏就可以看到你的图片了 xff0c 呵呵 本文就讲述了如何把文件 xff08 比如
  • VB中如何保存图片到 Sql Server中,又如何读取出来??

    Const BLOCKSIZE 61 8192 Public Sub SaveToDB ByRef Fld As ADODB Field DiskFile As String Dim byteData As Byte 39 定义数据块数组
  • 在Vf中如何将Excel数据导入(用Vf来导)?

    请大侠们赐教 使用import命令 xff0c 如 xff1a IMPORT FROM 表1 xls TYPE xls 将表1 xls导入为表1 dbf 点击 文件 xff0d gt 导入 xff0d gt 类型选择 xff1a Micro
  • 3.3 生产管理系统需求分析

    根据以上对生产管理内容和生产管理系统的分析 xff0c 一个标准的MRP生产管理系统应该包括如图3 12所示的几大功能 除此之外系统还应包括信息系统必须具备的通用功能 xff0c 例如系统管理 权限设置 数据备份与恢复等 xff0c 这些功
  • Spring源码之事物注解@Transactional原理(源码层面)

    官方文档地址 xff1a https docs spring io spring docs 4 3 21 RELEASE spring framework reference htmlsingle transaction 我翻译的地址 xf
  • 設計公司軟件開發需求分析流程

    工作流程 一 平面设计客户合作流程 信息收集 1 客户提出工作要求 2 客户提供相美文本及图片资料 公司介绍 项目描述 基本设计要求 提案 1 双方就设计内容进行协商 xff0c 修改 补充 xff0c 以达成共识 2双方确定设计具体细节及
  • DBcontext应用于已存在数据库

    EF4 1有三种方式来进行数据操作及持久化 分别是Database First Model First Code first xff0c 前面都已经简单介绍过了 下面简单小结一下 xff1a 1 Database First 是基于已存在的
  • 没有为该对象定义无参数的构造函数(MVC 之DefaultControllerFactory 依赖注入)

    Asp net mvc2中提供很多可以扩展的地方 xff0c 利用这些扩展之后 xff0c asp net mvc使用起来更加灵活 Simone Chiaretta曾写过一篇文章 xff1a 13 ASP NET MVC extensibi
  • Entity Framework 学习总结之一:ADO.NET 实体框架概述

    ADO NET 实体框架概述 新版本中的 ADO NET 以新实体框架为特色 它使开发人员可以通过对象模型 xff08 而不是逻辑 关系数据模型 xff09 专注于数据 实体框架有助于将逻辑数据架构抽象为概念模型 xff0c 并且允许以多种
  • Entity Framework 学习总结之四:对象服务介绍使用

    System Data Objects System Data Entity dll 该命名空间包含一些类 xff0c 用于提供对 对象服务 的核心功能的访问 这些类使您可以藉由作为实体类型实例的强类型 CLR 对象来查询 插入 更新和删除
  • Entity Framework 学习总结之四:对象服务介绍使用

    System Data Objects System Data Entity dll 该命名空间包含一些类 xff0c 用于提供对对象服务的核心功能的访问 这些类使您可以藉由作为实体类型实例的强类型 CLR 对象来查询 插入 更新和删除数据