我刚刚在WinForms中弄脏了,我通过一个可爱的教程发现了将数据库表拖到我主表单的设计视图上的魔力.所以,一切都很可爱,我已经得到了我的DataGridView,所有列都表现得很漂亮.
但...
当我运行我的应用程序对这个全新的,空的.sdf(我创建的两个表的空保存,它们本身是空的)时,每当我尝试时,我在对应于我的主键/标识列的列中得到-1创建第一条记录.
知道为什么会这样吗?如果它有帮助,那么该列就是一个int.
我开始使用Entity Framework 4,我正在创建一个演示应用程序作为学习练习.该应用程序是一个简单的文档构建器,它使用SQL CE存储.每个文档项目都有自己的SQL CE数据文件,用户打开其中一个文件来处理项目.
EDM非常简单.文档项目由主题列表组成,每个主题都有标题,描述和零个或多个注释.所以,我的实体是Subject,它包含Title和Text属性,Note,它有Title和Text属性.从Subject到Note有一对多的关联.
我试图弄清楚如何打开SQL CE数据文件.数据文件必须与EF4的创建数据库向导创建的SQL CE数据库的模式匹配,我将在应用程序的其他位置实现一个新文件用例来实现该要求.现在,我只是想在应用程序中打开现有数据文件.
我已经复制了下面现有的"打开文件"代码.我已将其设置为名为File Services的静态服务类.代码还没有完成,但足以显示我想要做的事情.我试图保持ObjectContext打开实体对象更新,并在文件关闭时处置它.
所以,这是我的问题:我是否走在正确的轨道上?我需要更改什么才能使此代码与EF4一起使用?有没有一个如何正确做到这一点的例子?
谢谢你的帮助.
我现有的代码:
public static class FileServices
{
#region Private Fields
// Member variables
private static EntityConnection m_EntityConnection;
private static ObjectContext m_ObjectContext;
#endregion
#region Service Methods
/// <summary>
/// Opens an SQL CE database file.
/// </summary>
/// <param name="filePath">The path to the SQL CE file to open.</param>
/// <param name="viewModel">The main window view model.</param>
public static void OpenSqlCeFile(string filePath, MainWindowViewModel viewModel)
{
// Configure an SQL …Run Code Online (Sandbox Code Playgroud) 以及这个问题在sql server中是通用的,
我在所有字段上都有索引.
同样的查询,但ID IN(int ID列表)非常快.
我试图将查询更改为OUTER Join,但这只会让情况变得更糟.所以有关为什么会发生这种情况以及如何解决这个问题的任何提示?
我有这个数据表:
ID | Data
--------+---------
1 | ONE
2 | ONE
3 | ONE
5 | TWO
7 | TWO
10 | TWO
15 | THREE
14 | THREE
8 | THREE
我希望得到这个结果
ID | Data
--------+---------
1 | ONE
5 | TWO
15 | THREE
所以我想只收集数据中每个值的第一条记录.值一,二,三可能存在于第二个表中,因此我可以使用join将它们合并.我怎样才能做到这一点?
我对Entity框架有点困惑,我想使用代码优先方法; infact我想写一下我的数据库表是如何通过类定义组成的.
主要的问题是我需要创建一个数据库(或打开它),通过选择它的路径(用户可以选择打开哪个数据库,并在他想要的时候创建新的数据库).我已经选择了Sql server compact来实现这一点,但是我仍然不明白如何使用代码优先方法来处理这种情况,因为我不明白如何选择应该使用代码优先方法创建数据库的位置,如果是可能.
任何人都可以解释我做错了什么,并建议一个不同的路线,如果有的话?谢谢
您能否在新手友好级别解释如何将数据从CSV文件批量导入Microsoft SQL Server Compact Edition中的表?我仍处于为MS SQL Server CE后端数据库创建C#前端的阶段.这是在Visual Studio 2010中使用MS SQL Server CE 3.5(如果重要的话,终极版).我可能更喜欢通过GUI数据库设计器来实现,方便,但如果有必要,我会欢迎SQL命令.这将作为开发人员完成一次,不需要最终用户使用.
我已经完成了谷歌搜索和Stackoverflow搜索,但仍未成功完成我想要做的事情.
当我使用此代码使用Nhibernate为SQL Server CE创建架构时:
Fluently.Configure()
.Database(MsSqlCeConfiguration.Standard
.ConnectionString(c => c.Is("Data Source=" + file))
.Dialect<NHibernate.Dialect.MsSqlCeDialect>()
.Driver<NHibernate.Driver.SqlServerCeDriver>()
.ShowSql())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateSessionFactory>())
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
private static void BuildSchema(Configuration config)
{
// new SchemaExport(config).Drop(false, true);
//new SchemaExport(config).Create(true, true);
//If DB File does not exists, create it.
if (!File.Exists(file))
{
Directory.CreateDirectory(Path.GetDirectoryName(databaseFileName));
SqlCeEngine engine = new SqlCeEngine("Data Source="+ file);
engine.CreateDatabase();
// this NHibernate tool takes a configuration (with mapping info in)
// and exports a database schema from it
new SchemaExport(config).Execute(false, true, false);
//FormulasDAO.AddDefaultFormulaCollection();
}
else
{
new …Run Code Online (Sandbox Code Playgroud) 我有一些SQL Server查询,我需要转换为SQL Server CE.至少我要面对一些麻烦.这就是我正在使用的:
DELETE FROM exSetData
WHERE exSetData
INNER JOIN Exercise ON exSetData.exName = Exercise.Name
WHERE Exercise.Day = @name;
Run Code Online (Sandbox Code Playgroud)
我开始尝试AND EXISTS在SQL Server CE中使用,但我不相信它能够执行我需要的任务,显然我错误地使用它.
DELETE FROM exSetData
WHERE EXISTS (Exercise.Name = exSetData.exName AND Exercise.Day = @name)
Run Code Online (Sandbox Code Playgroud)
语法错误.
如何在SQL Server CE中执行相同的查询?
还有其他命令你建议我调查一下吗?我一直在使用Microsoft文档,但它DELETE(在我看来)并不是那么彻底.
我顺便使用SQL Server CE 4.0.
谢谢
我有一个这样的数据库表:

我想得到第二行的行号.我使用以下代码:
SELECT ROW_NUMBER() OVER(ORDER BY Name) From Deposit WHERE Name='Murali'
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用.代码有什么问题?提前致谢.
我正在使用实体框架来管理我的sql-server-ce数据库.我希望我的表的主键由其他表的几个外键组成.我期待这样的事情发挥作用:
class Bill{
[Key]
public virtual Customer Customer { get; set; }
[Key]
public virtual Era Era { get; set; }
[Key]
public virtual CompanyCode CompanyCode { get; set; }
public long? Amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但它导致以下数据库迁移错误:
BillPrinter.Bill :: EntityType'Bill'没有定义键.定义此EntityType的键.Bills:EntityType:EntitySet'Bills'基于类型'Bill',没有定义键.
如何让我的表有一个主键由这三个外键组成?
sql-server-ce ×10
c# ×6
sql ×6
sql-server ×3
data-binding ×1
nhibernate ×1
performance ×1
subquery ×1
winforms ×1