我一直在玩EF,看看它能处理什么.此外,许多文章和帖子解释了可以使用EF的各种场景,但是如果以某种方式错过"con"方面.现在我的问题是,在什么样的情况下我应该远离实体框架?
如果你在这个领域有一些经验,请告诉我哪些场景不适合EF.告诉我你经历过的一些缺点,你会选择不同的技术.
我使用SVN作为源控制系统,我想知道如何比较目录而忽略任何元数据差异.有没有办法告诉svn diff我只比较实际内容并忽略任何元数据?
我的意思是像SVN属性等元数据,它们不会影响文件内容.假设文件X在分支B中具有与trunk T相比的附加属性.不幸的是,即使文件X的实际内容相同,它也将显示在'svn diff TB'中.
我寻找这样的东西:
svn diff https://example.org/tags/v1 https://example.org/tags/v2 -x -ignore-metadata --summarize
Run Code Online (Sandbox Code Playgroud)
更新:我通过直接在文件系统上进行差异而不是使用SVN工具来解决这个问题.请看下面我自己的答案......
我使用Entity Framework来访问我的SQL数据.我在数据库模式中有一些约束,我想知道如何处理由这些约束引起的异常.
例如,在两个用户尝试同时向DB添加(几乎)相同的实体的情况下,我得到以下异常.
System.Data.UpdateException
"An error occurred while updating the entries. See the InnerException for details."
(inner exception) System.Data.SqlClient.SqlException
"Violation of UNIQUE KEY constraint 'Unique_GiftId'. Cannot insert duplicate key in object 'dbo.Donations'.\r\nThe statement has been terminated."
Run Code Online (Sandbox Code Playgroud)
如何正确捕获此特定异常?
脏的解决方案:
catch (UpdateException ex)
{
SqlException innerException = ex.InnerException as SqlException;
if (innerException != null && innerException.Message.StartsWith("Violation of UNIQUE KEY constraint 'Unique_GiftId'"))
{
// handle exception here..
}
else
{
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
现在虽然这种方法有效,但它有一些缺点:
你知道更好的解决方案吗?感谢所有反馈..
注意:我不想在应用程序层中手动编写约束,我想将它们放在数据库中.
sql sql-server entity-framework constraints unique-constraint
为什么抽象方法需要new/override,虚拟方法不需要?
样本1:
abstract class ShapesClass
{
abstract public int Area(); // abstract!
}
class Square : ShapesClass
{
int x, y;
public int Area() // Error: missing 'override' or 'new'
{
return x * y;
}
}
Run Code Online (Sandbox Code Playgroud)
编译器将显示此错误: 要使当前成员覆盖该实现,请添加override关键字.否则添加新关键字
样本2:
class ShapesClass
{
virtual public int Area() { return 0; } // it is virtual now!
}
class Square : ShapesClass
{
int x, y;
public int Area() // no explicit 'override' or 'new' required
{
return x * y; …Run Code Online (Sandbox Code Playgroud) 有此DAL/BLL设计建议为ASP.NET(2.0)应用由微软.我知道一些替代方案,我在这里已经阅读了相关问题.但是我想知道这个提议的解决方案现在是否值得实施,你知道的是否有一个特定的缺点?
我想开发DAL/BLL组件以供公司内部使用,从各种应用程序和脚本访问客户和员工数据等.然而,在我开始构建这些东西之前,我想确保这个解决方案是"好的".例如,BLL传递数据表而不是封装任何东西,您没有包含逻辑的隔离业务对象.它基本上只是一个愚蠢的层,可以简化CRUD操作并允许控件的数据绑定.
在这个领域有经验的人能否指出我对这种方法的赞成和反对意见?
我正在寻找一种高性能算法,根据以下数据结构按位置、性别和年龄匹配大量人员:
对于任何人 P,算法应返回适用的候选人 C:
该算法应按距离(纬度/经度)顺序返回前 100 个候选 C。该算法应该针对搜索和更新进行优化,因为人们可能经常改变他们的位置。
我目前的想法是,kd 树可能比局部敏感哈希更适合这些需求,我应该朝这个方向发展。
您对我有什么建议?我应该寻找什么?您看到什么风险?
谢谢!
更新:
algorithm kdtree nearest-neighbor locality-sensitive-hash azure-cosmosdb
是否有一种通用的方式来表达C++中的参数用法?我想暗中告诉我的班级的消费者他们传递的参数将如何被类使用.
例子:
是否有一种常见的方式来简单地使用方法声明来表达这些内容?我认为在第一种情况下,std :: auto_ptr会有意义.在第二种情况下,我通常会使用一个指针来避免有人从堆栈中传递一个值,这会使我的引用很快失效,或者是shared_ptr.在第三种情况下,我参考允许来自堆栈的值.
你怎么处理这个?还有必要在这里依赖智能指针,或者只是通过某种方式使用裸引用和指针来表达这些事情吗?
我有一个问题让存储过程调试在Visual Studio 2008的工作:当我开始调试,我在输出窗口获得这些成功消息,但是实际的存储过程窗口不显示.
Auto-attach to process '[1640] [SQL] stagsql' on machine 'stagsql' succeeded.
The thread 'stagsql [67]' (0xf80) has exited with code 0 (0x0).
The thread 'stagsql [67]' (0xf80) has exited with code 0 (0x0).
The thread 'stagsql [69]' (0x908) has exited with code 0 (0x0).
The thread 'stagsql [69]' (0x908) has exited with code 0 (0x0).
The thread 'stagsql [69]' (0x908) has exited with code 0 (0x0).
The thread 'stagsql [69]' (0x908) has exited with code 0 (0x0).
Running …Run Code Online (Sandbox Code Playgroud) 在 Azure Cosmos DB (SQL API) 中,以下查询收费9356.66 RU:
SELECT * FROM Core c WHERE c.id = @id -- @id is a GUID
Run Code Online (Sandbox Code Playgroud)
相比之下,以下更复杂的查询仅收费6.84 RU:
SELECT TOP 10 * FROM Core c WHERE c.type = "Agent"
Run Code Online (Sandbox Code Playgroud)
这两个示例中的文档都非常小,但具有一些属性。此外,文档集合不使用任何自定义索引策略。该集合包含 105685 份文档。
对我来说,这听起来好像“id”字段上没有正常工作的索引。
这怎么可能以及如何解决?
更新:
背景:
我在我的 Android (Java) 项目中使用 Room 持久性库来支持数据的本地缓存。Room 在查询或保存数据时在专用线程上运行。
问题:
如果在 Room 管理的这些线程之一中抛出异常,那么整个应用程序就会崩溃。这可能发生在数据不一致的情况下,例如数据与当前模式不匹配。这是非常成问题的。我宁愿自己处理此类异常并擦除本地数据库中的所有数据 - 这比让用户使用完全损坏且无法修复的应用程序要好。
示例异常:
2020-01-22 12:45:08.252 9159-11043/com.xyz E/AndroidRuntime: FATAL EXCEPTION: arch_disk_io_1
Process: com.xyz, PID: 9159
java.lang.RuntimeException: Exception while computing database live data.
at androidx.room.RoomTrackingLiveData$1.run(RoomTrackingLiveData.java:92)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "primary" (class com.xyz.model.remotedatasource.sampleApi.entities.ProfileImage), not marked as ignorable (2 known properties: "isPrimary", "url"])
at [Source: (byte[])":)
... -1, column: 402] (through reference chain: com.xyz.model.remotedatasource.sampleApi.entities.Candidate["profileImages"]->java.util.ArrayList[0]->com.xyz.model.remotedatasource.sampleApi.entities.ProfileImage["primary"])
at com.xyz.model.localdatasource.Converters.deserialize(Converters.java:113)
at com.xyz.model.localdatasource.Converters.toCandidate(Converters.java:73)
at com.xyz.model.localdatasource.LocalDao_Impl$4.call(LocalDao_Impl.java:270)
at com.xyz.model.localdatasource.LocalDao_Impl$4.call(LocalDao_Impl.java:217)
at androidx.room.RoomTrackingLiveData$1.run(RoomTrackingLiveData.java:90) …Run Code Online (Sandbox Code Playgroud) c# ×3
sql ×2
.net ×1
algorithm ×1
android ×1
android-room ×1
architecture ×1
arguments ×1
asp.net ×1
bll ×1
c++ ×1
constraints ×1
datatable ×1
debugging ×1
diff ×1
interface ×1
java ×1
kdtree ×1
metadata ×1
properties ×1
sql-server ×1
svn ×1
t-sql ×1
virtual ×1