我在Microsoft Sql CE中创建了一个表,用于保存一些数据.我已经通过SqlMetal生成了一个ORM,并且我将数据源拉入了我的WPF项目.
我想创建一个简单的WPF表单,可以通过ORM生成的类来编辑表中的记录.我希望这个表单支持典型的OK/Cancel语义.我已经在我认为是典型的时尚中创建了表单,在相应的字段上使用TwoWay数据绑定来绑定来自ORM的对象的实例.例如,给定ORM中具有属性"TaskName"的对象,我在WPF表单中包含以下内容:
<Label Grid.Column="0" Grid.Row="0" >
Name:
</Label>
<TextBox Name="txtName" Grid.Column="1" Grid.Row="0"
Text="{Binding TaskName, Mode=TwoWay}" AcceptsReturn="False"
MaxLines="1" />
Run Code Online (Sandbox Code Playgroud)
这与代码中的DataContext赋值相结合:
var newRow = new OrmGeneratedClass();
// Populate default values on newRow, e.g.
detailWindow.DataContext = newRow;
detailWindow.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
可以合理地创建新行.通过表单进行的所有更改都会立即反映在底层的OrmGeneratedClass中.问题是,如果例如OrmGeneratedClass填充了先前保存的值,则不会立即支持取消更改.
对于这种情况,什么是好的设计,或者在我达到这一点之前我是否设计错了? 我是WPF和Sql Server数据源/ ORM集成方面的新手.(这是我用来学习这两种技术的个人项目.)
我有几个想法,并将他们放在答案中
我刚刚使用MSDN的文档制作了一个非常简单的测试应用程序.我想要做的就是在我的VS 2010应用程序的SQL Server Compact数据库中的表中插入一条记录.
但是当我运行它时,它表现得很好(没有错误),但是当我从服务器资源管理器中查看表数据时,记录永远不会插入到我的SQL Compact 3.5数据库中.
我的代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlServerCe;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
SqlCeConnection conn = null;
try
{
conn = new SqlCeConnection("Data Source = test.sdf; Password ='pass'");
conn.Open();
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText = "INSERT INTO TEST ([test]) Values('NWIND')";
cmd.ExecuteNonQuery();
}
finally
{
conn.Close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
我有一个名为test.sdf的数据库.它包含一个表"test",其中包含1列"test".
我的示例测试应用程序位于:http: //dl.dropbox.com/u/3051071/ConsoleApplication1.zip
我已经测试了我的test.sdf数据库的数据库连接,并且测试正常.
我无法想象为什么我无法在我的桌子中插入记录.每当我在执行后查看我的数据时,我的表中的值始终为null.
有人可以告诉我这里我做错了什么吗?
谢谢.
以下关于"非管理员用户实例"的"SQL Server 2008 R2"页面顶部有一个注释,内容如下:
将在Microsoft SQL Server的未来版本中删除此功能.避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序.
http://msdn.microsoft.com/en-us/library/ms143684.aspx
这个功能的未来是什么?会完全放弃吗?取而代之的是另一个功能?SQL Server Compact版本是否意味着填补这个空间?
凹凸.没有人?有没有人使用用户实例功能?
我创建了一个Windows窗体应用程序:
我正在使用EntityFramework 4.1与Code First Approach和SQL Compact 4.0数据库.
我在用于连接数据库的类库项目的app.config文件中创建了一个连接字符串.问题是连接字符串显然对数据库创建没有影响.我的意思是一切都与程序一起正常工作,但即使我指定了数据库的位置,这也没有任何效果!
我在正确的app.config中写作吗?我是否需要以特定方式初始化我的DbContext类?(今天我没有在构造函数中传递任何连接字符串)
DbContext类:
public class MyDB : DbContext
{
public DbSet<ContactPerson> ContactPersons { get; set; }
public DbSet<Customer> Customers { get; set; }
public DbSet<Project> Projects { get; set; }
public DbSet<Quotation> Quotations { get; set; }
public MyDB()
: base("MyDatabase")
{
}
}
Run Code Online (Sandbox Code Playgroud)
App.config连接字符串:
<add name="MyDatabase" connectionString="Data Source=MyDB.sdf"
providerName="System.Data.SqlServerCE.4.0">
Run Code Online (Sandbox Code Playgroud) connection-string sql-server-ce ef-code-first entity-framework-4.1
我正在尝试更新sql server compact edition 4.0中两个表之间的值.我的sql如下:
UPDATE ei SET ei.EstateID=e.EstateID FROM EstateImages ei
INNER JOIN Estates e ON e.TempKey=ei.TempKey
Run Code Online (Sandbox Code Playgroud)
还试过这个:
UPDATE EstateImages SET EstateID =
(SELECT EstateID FROM Estates WHERE TempKey = EstateImages.TempKey)
Run Code Online (Sandbox Code Playgroud)
我有错误:
There was an error parsing the query.
[ Token line number = 1, Token line offset = 37, Token error = SELECT ]
Run Code Online (Sandbox Code Playgroud) 所以,我有以下代码用于连接记录并将其插入数据库:
string dbfile = "|DataDirectory|\\Databases\\Database.sdf";
SqlConnection connection = new SqlConnection("Data Source=" + dbfile);
SqlCommand query = new SqlCommand("insert into Leggers values('" + leggernummer + "','" + omschrijving + "')", connection);
** connection.Open(); **
query.BeginExecuteNonQuery();
connection.Close();
Run Code Online (Sandbox Code Playgroud)
我的配置文件如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="connectionstring"
connectionString="Data Source=|DataDirectory|\Databases\Database.sdf"
providerName="Microsoft.SqlServerCe.Client.3.5" />
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
然后它在第一个代码块中**和**之间的部分给出错误
错误是:
System.Data.SqlClient.SqlException was unhandled
Message=A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify …Run Code Online (Sandbox Code Playgroud) 我不知道这段代码有什么问题,它现在给我一天的错误:
select row_number() over(order by s.title) as rowNumber, s.id
from story as s
Run Code Online (Sandbox Code Playgroud)
表定义:
id bigint
title nvarchar(100)
content ntext
Run Code Online (Sandbox Code Playgroud)
数据库:SQL Server Compact 4.0.8482.1
错误:
解析查询时出错.[令牌行号= 1,令牌行偏移= 22,令牌错误=超过]
我怎么做的:
我在这里搜索了同样的问题,但解决方案不适用于我的,我需要row_number功能如此糟糕.
您可以使用SQL CE执行多个语句,这一直是事实.事实上,我正在使用SQL Server Compact Toolbox来做到这一点.但是,当我采用相同的多语句命令并从Dapper执行它们时......
public const string SampleDml = @"
INSERT INTO [Plugin](Name, TypeName) VALUES ('Blog','Shroom.Blog');
GO
INSERT INTO [ContentDef](PluginID, Name, Placement, IsStatic) VALUES(@@IDENTITY,'MyBlog','Layout:Left',1);
GO
";
Run Code Online (Sandbox Code Playgroud)
然后我不断收到此错误:
解析查询时出错.[令牌行号= 3,令牌行偏移= 1,令牌错误= GO]
我正在使用的SQL CE库的版本是版本4.0.0.0(运行时版本v2.0.50727).我正在使用Dapper 1.12.0.0(运行时版本v4.0.30319)和Dapper Extensions 1.3.2.0(运行时版本v4.0.30319).
SQL CE库看起来像是错误的运行时,但是Web平台安装程序说我有最新的(所以这真的是最新的?).思考?
我正在使用C#VS 2010开发一个应用程序.
我正在使用CE数据库.我从数据库中搜索字符串的代码是
string con = @"Data Source=|DataDirectory|\Database\Acadamy.sdf;Persist Security Info=False";
string cmd = "SELECT sid AS [Student ID], sname AS [Student Name], contact AS [Contact No] FROM Student WHERE sname LIKE '%'+ @name +'%'";
var dt = new DataTable();
using (var a = new SqlCeDataAdapter())
{
try
{
a.SelectCommand = new SqlCeCommand();
a.SelectCommand.Connection = new SqlCeConnection(con);
a.SelectCommand.CommandType = CommandType.Text;
a.SelectCommand.CommandText = cmd;
a.SelectCommand.Parameters.AddWithValue("@name", textBox1.Text);
a.Fill(dt);
dataGridView1.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
当我输入任何字符串时,as我收到错误System.FormatException: …
在这段代码中,我有一个按钮点击事件.每当我第一次点击按钮时,代码都能正常工作.但是,如果我在其他时间单击该按钮则会抛出错误.
我的代码是
private void button2_Click(object sender, EventArgs e)
{
string itemname = comboBox1.SelectedItem.ToString();
con.Open();
command.CommandText = "DELETE FROM pricedata WHERE Item=@item";
command.Connection = con;
command.Parameters.AddWithValue("@item", itemname);
command.ExecuteNonQuery();
con.Close();
}
Run Code Online (Sandbox Code Playgroud) sql-server-ce ×10
c# ×4
ado.net ×1
dapper ×1
data-binding ×1
linq-to-sql ×1
sql ×1
sql-server ×1
t-sql ×1
wpf ×1