已经很晚了,所以这一定是愚蠢的.我有LinqPad连接到我的数据库,似乎无法获得最简单的查询结果.
var q = from app in AppInstances
select new {
AppId = app.AppId
};
Run Code Online (Sandbox Code Playgroud)
当我运行它时,LinqPad说它成功执行(C#语句模式).没有什么是退缩的.
我可以编写以下非常简单的Lambda(C#表达式模式):
AppInstances.Select (p => p.AppId)
Run Code Online (Sandbox Code Playgroud)
这很有效.为什么?我更喜欢使用非lambda查询构建功能.我确信这一切都是愚蠢的.
我正在尝试部署我写的服务.这是InstallLog文件:
Installing assembly 'c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe'.
Affected parameters are:
logtoconsole =
assemblypath = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe
logfile = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.InstallLog
Installing service TweetLinkService...
Creating EventLog source TweetLinkService in log Application...
Rolling back assembly 'c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe'.
Affected parameters are:
logtoconsole =
assemblypath = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe
logfile = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.InstallLog
Restoring event log to previous state for source TweetLinkService.
An exception occurred during the Rollback phase of the System.Diagnostics.EventLogInstaller installer.
System.Security.SecurityException: The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security.
An …Run Code Online (Sandbox Code Playgroud) 我搜索了网站,虽然我发现了一些非常有用的信息,但我无法弄清楚我的代码是怎么回事.我有以下web.config:
<?xml version="1.0"?>
<configuration>
<system.web>
</system.web>
<system.webServer>
</system.webServer>
<appSettings>
<add key="APIKey" value="23e24c73feed7ca0f6afd876575842de"/>
<add key="Secret" value="################################"/>
<add key="Callback" value="http://localhost:55994/"/>
<add key="Suffix" value="My3Words"/>
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我已经删除了system.web和system.webServer中的内容,但它是ASP.NET MVC应用程序中生成的默认设置.
我试图访问该部分中的键(这是一个使用FB Connect的简单Facebook应用程序).
在我的代码中,我有以下行:
return ConfigurationManager.AppSettings["APIKey"];
Run Code Online (Sandbox Code Playgroud)
它返回null.我无法弄清楚发生了什么.我有必要的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Configuration;
Run Code Online (Sandbox Code Playgroud)
在我的.cs文件的顶部.我有一个非常强烈的怀疑,键盘后(即在我的大脑中)存在错误,但我无法解决这个问题.有任何想法吗?
我正在尝试做我认为简单的事情,但我怀疑我太难以知道我可能做错了什么.我有一个LINQ查询返回:
IQueryable<CWords> Result
Run Code Online (Sandbox Code Playgroud)
CWords是一个类,我定义如下:
public class CWords
{
public CWords(){}
public string _column1{ get; set; }
public float _column2{ get; set; }
public void fixData(){}
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我试图修改Result的每个成员的_column2字段.我试过了:
foreach (CWords item in Result)
{
item.fixData();
}
Run Code Online (Sandbox Code Playgroud)
但当然这不起作用.item不在适当的范围内,因此我在fixData中所做的任何更改都没有在Result中.
因为你无法索引IQueryable,我的解决方法是执行以下操作:
var items = goodWords.ToList();
for (int i = 0; i < items.Count(); i++ )
{
items[i].fixData();
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
更新4/8/09 - 我进入了一个新的一周,没有任何进展,也没有来自Facebook论坛的答案.在那里没有一个回应,这是非常令人失望的.我也无法弄清楚如何在这个问题上给予赏金,但我真的非常希望能够解决这个问题.
我看了很多帖子,看看之前是否发布过,但事实并非如此.这是简短的版本:
我将通过示例FB Connect教程(v1),并且无法在Win7上的IE8中使其工作.它在Win7上的FF3上按预期工作.
长版:
我很惊讶事情没有用,因为我几乎复制并粘贴了内容.我通过alert()javascript调用跳过了这一点,所以我把它放进去看看解析器是否达到了这个目的.我把以下代码放入:
[my raw html]
Or use, <fb:login-button length="long" onlogin="alert('yo!!!');"></fb:login-button>
[/my raw html]
Run Code Online (Sandbox Code Playgroud)
警报不会弹出IE8.它适用于FF.
当我改回调用update_user_box()时,我的HTML看起来像:
Or use, <fb:login-button length="long" onlogin="update_user_box();"></fb:login-button>
<script type="text/javascript">
function update_user_box() {
var user_box = document.getElementById("user");
user_box.innerHTML =
"<span>"
+ "<fb:profile-pic uid='loggedinuser' facebook-logo='true'></fb:profile_pic>"
+ "Welcome, <fb:name uid='loggedinuser' useyou='false'></fb:name>."
+ "You are signed in."
+ "</span>"
FB.XFBML.Host.parseDomTree();
}
FB.init("23e24c73feed7ca0f6afd876575842de", "../../Connect/xd_receiver.htm", { "ifUserConnected": update_user_box });
</script>
Run Code Online (Sandbox Code Playgroud)
再次,这在FF3中工作就好了.我的照片显示了一切.它实际上让我更加不高兴它在FF3中工作而不是完全没有工作的情况.
以下是IE8中见证的行为:
当我点击FBConnect按钮时.弹出javascript窗口并加载正确的登录页面
焦点更改回主窗口(与我的应用程序一起)
IE8主窗口(我单击连接按钮的窗口)现在显示了一个facebook登录页面.
当我将我的凭据输入FB javascript窗口时,页面会加载该页面的空白文档URL:http:// localhost:55994/Connect/xd_receiver.htm?fb_login&fname = _opener&session =%7B%22session_key%22%3A%223 .A4DpHk4nrKHooB7K_Q6EiA __.86400.1238796000-623225%22%2C%22uid%22%3A%22623225%22%2C%22expires%22%3A1238796000%2C%22secret%22%3A%22HtjtJS_xg8dX7TR7lLggew __%22%2C%22sig%22%3A%22ae12c0f98d4567612b70861314d42fbb %22%7D
查看该页面的来源: …
这属于我继承的项目,不能更改表结构或数据访问模型.我被要求优化用于将数据插入数据库的算法.
我们在表T中有一个数据集.从那里,我们拉出一个我们将调用A的集合.我们还查询XML feed并得到一个我们将调用X的集合.
所有这些更改都需要插回到数据库中.
设置的算法执行以下操作:
Query XML into a LIST
foreach over the XML LIST
look up foreach.item in A via LINQ (i.e. query = from record in A where
record.GUID == foreach.item.GUID
select record)
if query.Count() == 0
insert into A (via context.AddToTableName(newTableNameObject)
else
var currentRecord = query.First()
set all properties on currentRecord = properties from foreach.item
context.SaveChanges()
Run Code Online (Sandbox Code Playgroud)
我知道这不是最理想的.我试图将A放入foreach循环之外的对象(称为queryA),以便将查询移动到内存而不是访问磁盘,但在考虑完之后,我意识到数据库已经在内存中了.
已经将计时器对象添加到算法中,很明显,花费最多时间的是SaveChanges()函数调用.在某些情况下,它是20毫秒,而在其他一些情况下,在可解释的情况下,它会跳到100毫秒.
我宁愿只调用SaveChanges()一次.考虑到我对EF(最好是最薄的)知识的深度以及无法更改表结构并且必须保留不在X中的A的数据的限制,我无法弄清楚如何做到这一点.
建议?
我正在使用以下代码:
myObj jsonStream = ser.Deserialize<myObj>(jsonStream);
Run Code Online (Sandbox Code Playgroud)
一切都工作正常,直到返回的 JSON 的其中一个字段为空值。IE:
"name" : null
Run Code Online (Sandbox Code Playgroud)
在反序列化过程中,它抛出异常。在我的 myObj 中,我有一个成员:
public string name;
Run Code Online (Sandbox Code Playgroud)
如何使用 System.Web.Script.Serialization 程序集优雅地处理从数据源返回的奇怪空值?我试过:
public string name = "";
Run Code Online (Sandbox Code Playgroud)
但这没有用。
我正在尝试进行LINQ to Entities查询(我仍然非常熟悉EF并且我正在学习它比LinqToSQL差异化)并且我正在尝试做这样的事情:
DateTime begin = new DateTime(2011, 1, 1);
Apps = (from app in context.Instances
where app.ReleaseDate.Date == begin
select new ScalpApp
{
Image = app.Image,
PublisherName = app.PublisherName,
}).ToList();
Run Code Online (Sandbox Code Playgroud)
虽然这在LinqPad中有效,但它不在我的代码中.抛出的异常是:
Run Code Online (Sandbox Code Playgroud)The specified type member 'Date' is not supported in LINQ to Entities.仅支持初始值设定项,实体成员和实体导航属性.
我如何在LinqToEF中执行此操作?DB中的字段是完整的DateTime(带有时间码),我试图仅根据日期进行解析.
阅读:http://code.google.com/appengine/docs/python/datastore/gqlreference.html
我想用:
:= IN
但我不确定如何使它工作.我们假设如下
class User(db.Model):
name = db.StringProperty()
class UniqueListOfSavedItems(db.Model):
str = db.StringPropery()
datesaved = db.DateTimeProperty()
class UserListOfSavedItems(db.Model):
name = db.ReferenceProperty(User, collection='user')
str = db.ReferenceProperty(UniqueListOfSavedItems, collection='itemlist')
Run Code Online (Sandbox Code Playgroud)
如何进行查询以获取用户保存的项目列表?显然我可以这样做:
q = db.Gql("SELECT * FROM UserListOfSavedItems WHERE name :=", user[0].name)
Run Code Online (Sandbox Code Playgroud)
但这给我一个关键列表.我现在想要获取该列表并将其放入查询中以从UniqueListOfSavedItems中获取str字段.我以为我能做到:
q2 = db.Gql("SELECT * FROM UniqueListOfSavedItems WHERE := str in q")
Run Code Online (Sandbox Code Playgroud)
但是有些事情不对......任何想法?是(我在我的日常工作,所以现在不能测试):
q2 = db.Gql("SELECT * FROM UniqueListOfSavedItems __key__ := str in q)
Run Code Online (Sandbox Code Playgroud)
旁注:要搜索的是一个非常难以解决的问题,因为我真正关心的是"IN"运算符.
是否有一种简单的方法可以从外部HTTP请求确定网站背后使用的数据库?即,我发出一个HTTP请求,获取任何来自网络服务器的数据 - 我可以检查任何数据并可靠地确定正在使用的数据库吗?我想不是,但想到我会问这个小组.
c# ×5
asp.net ×2
asp.net-mvc ×2
database ×2
linq ×2
facebook ×1
gql ×1
http ×1
json ×1
linq-to-sql ×1
python ×1
sql ×1
sql-server ×1