所以我跟着a tutorial使用WCF服务将JSON数据发送到SQL。
我们假设该项目名为JsonWcfService。
在这个项目中,添加了名为Order.cs
的.cs文件:
namespace JsonWcfService
{
[DataContract]
[Serializable]
public class wsOrder
{
[DataMember]
public int OrderID { get; set; }
//some other fields
}
}
如您所见,文件名和类名不同。
然后,有一个函数使用这个类,反序列化发送的Json数据,接受Stream JSONDataStream
作为参数:
StreamReader stream = new StreamReader(JSONDataStream);
string JSONData = stream.ReadToEnd();
JavaScriptSerializer jss = new JavaScriptSerializer();
wsOrder order = jss.Deserialize<wsOrder>(JSONData);
所以这里将数据反序列化为wsOrder类的单个实例(如果我理解正确的话)。
接下来,我们看看是否有与数据库中的OrderID匹配的记录:
testDBDataContext dc = new testDBDataContext();
Order currentOrder = dc.Orders.Where(o => o.OrderID == order.OrderID).FirstOrDefault();
这是我的困惑:Order currentOrder
- 是否说它是Order.cs文件的一个实例?这是名称空间吗?
当我尝试编写自己的WCF服务并在其中创建Example.cs
public class wsExample
时,它会给我以下错误:
The type or namespace name 'Example' could not be found (are you missing a using directive or an assembly reference?)
当我尝试使用与上述相同的方法时:
StreamReader stream = new StreamReader(testData);
string testReceive = stream.ReadToEnd();
JavaScriptSerializer jss = new JavaScriptSerializer();
wsExample example = jss.Deserialize<wsExample>(testReceive);
testDBDataContext dc = new testDBDataContext();
Example currentExample = dc.testTable.Where(o => o.name == example.Name).FirstOrDefault();
答案 0 :(得分:1)
我猜Order
是拼写错误,或者是EntityFramework生成的数据库上下文中的类型。如果是后者,则应该有wsOrder
到Order
之间的映射,反之亦然。
我不是'作为一个档案的名字'。 C#不这样做。您可以在一个文件中包含多个类,并且可以将一个类分布在多个文件中(使用partial
)。但它不会从文件派生类名。