我遇到了一个非常令人沮丧的问题,即使用实体框架将RichTextBox
格式化后存储到数据库中。
这是我的代码:
namespace simpleton
{
/// <summary>
/// Interaction logic for AddNewOE.xaml
/// </summary>
public partial class AddNewOE : Window
{
//db connection
simpletonDBEntities _db = new simpletonDBEntities();
public AddNewOE()
{
InitializeComponent();
}
private void insertobBtn_Click(object sender, RoutedEventArgs e)
{
db_entry newdb_entries = new db_entry()
{
ReportDetails = ConvertRtbToBytes(rtfText)
};
_db.ob_entries.Add(newOb_entries);
_db.SaveChanges();
}
public static byte[] ConvertRtbToBytes(string richTextBox)
{
byte[] data = null;
string rtfText; //string to save to db
TextRange tr = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
using (MemoryStream ms = new MemoryStream())
{
tr.Save(ms, DataFormats.Rtf);
rtfText = Encoding.ASCII.GetString(ms.ToArray());
}
return data;
}
}
}
我在ConvertRtbToBytes()
函数上遇到错误:
“字符串”不包含“文档”的定义,找不到可以接受的扩展方法“文档”接受字符串类型的第一个参数(您是否缺少using指令或程序集引用?)
我也确定通用代码不正确。
答案 0 :(得分:1)
您需要更加小心地描述问题,因为我怀疑您想在数据库中存储RichTextBox。我猜您想将RichTextBox的内容存储在数据库中。
错误本身是不言自明的:
“字符串”不包含“文档”的定义,找不到可以接受的扩展方法“文档”接受字符串类型的第一个参数(您是否缺少using指令或程序集引用?)
您有一个名为richTextBox
且类型为string
的参数,稍后您将尝试以这种方式使用该参数:
public static byte[] ConvertRtbToBytes(string richTextBox)
{
// ...
TextRange tr = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
// ...
}
因此,您尝试访问Document
的{{1}}属性,但是string
没有string
属性。您可能打算将参数设为Document
类型。
话虽如此,您的代码还有许多缺陷,甚至无法编译:
在方法RichTextBox
中:
insertobBtn_Click
已使用,但从未定义rtfText
的变量,但是尝试保存一个名为newdb_entries
的变量在方法newOb_entries
中:
ConvertRtbToBytes
并返回byte[] data = null;
,但是data
从未设置或填充数据data
并为其分配了一些值,但对此不做任何事答案 1 :(得分:0)
我终于想通了...
namespace simpleton
{
/// <summary>
/// Interaction logic for AddNewOE.xaml
/// </summary>
public partial class AddNewOE : Window
{
//db connection
simpletonDBEntities _db = new simpletonDBEntities();
public AddNewOE()
{
InitializeComponent();
}
private void insertobBtn_Click(object sender, RoutedEventArgs e)
{
TextRange tr = new TextRange(rtbEditor.Document.ContentStart, rtbEditor.Document.ContentEnd);
MemoryStream ms = new MemoryStream();
tr.Save(ms, DataFormats.Rtf);
string rtfText = Encoding.ASCII.GetString(ms.ToArray());
db_entry newdb_entries = new db_entry()
{
ReportDetails = rtfText
};
_db.ob_entries.Add(newOb_entries);
_db.SaveChanges();
}
}