这是书本上例题的源码,但是不知道为什么会报错;
事件:
 protected void Button4_Click(object sender, EventArgs e)
        {
            Sample21_1.Models.User user = new Sample21_1.Models.User();
            int userID = user.register(UserName.Text.ToString(), RealName.Text.ToString(), Password.Text.ToString(),
                Address.Text.ToString(), Phone.Text.ToString(), Email.Text.ToString(), 3, Re.Text.ToString());
            if (userID == -1)
            {
                Response.Write("用户名已被占用!");
            }
            else if (userID == 0)
            {
                Response.Write("数据库访问失败!");
            }
            else
            {
                Session["username"] = UserName.Text.ToString();
                Session["userID"] = userID;
                //Response.Redirect("UserMain.aspx");
                Response.Write("<script language=\"javascript\" type=\"text/javascript\">window.close();</script>");
            }
        }
public int register(string UserName, string RealName, string Password,
            string Address, string phone, string Email, int RoleID, string Re)
        {
            //声明定义类型和方法的
DataModelDataContext类的对象,它是调用模型和方法的基础。
            DataModelDataContext data = new DataModelDataContext();
           //调用方法Pr_Register获得所有的书籍信息            return data.(UserName, RealName, Password,Address, phone, Email, RoleID, Re);
//无法从“System.Data.Linq.ISingleResult<Sample21_1.Models.Pr_RegisterResult>”转换为“int” 
            //try
            //{
            //    return int.Parse(data.Pr_Register(UserName, RealName, Password, Address, phone, Email, RoleID, Re));
            //}
            //catch
            //{
            //    return 0;
            //}
无法从“System.Data.Linq.ISingleResult<Sample21_1.Models.Pr_RegisterResult>”转换为“string” 
 }
  public partial class DataModelDataContext : DataContext
    {
private static MappingSource mappingSource =
 new AttributeMappingSource(); 

    #region 可扩展性方法定义
    partial void OnCreated();
    partial void InsertBook(Book instance);
    partial void UpdateBook(Book instance);
    partial void DeleteBook(Book instance);
    partial void Insertcart(cart instance);
    partial void Updatecart(cart instance);
    partial void Deletecart(cart instance);
    partial void InsertCategory(Category instance);
    partial void UpdateCategory(Category instance);
    partial void DeleteCategory(Category instance);
    partial void InsertComment(Comment instance);
    partial void UpdateComment(Comment instance);
    partial void DeleteComment(Comment instance);
    partial void InsertPicture(Picture instance);
    partial void UpdatePicture(Picture instance);
    partial void DeletePicture(Picture instance);
    partial void InsertUser(User instance);
    partial void UpdateUser(User instance);
    partial void DeleteUser(User instance);
    partial void InsertOrder(Order instance);
    partial void UpdateOrder(Order instance);
    partial void DeleteOrder(Order instance);
    partial void InsertOrderList(OrderList instance);
    partial void UpdateOrderList(OrderList instance);
    partial void DeleteOrderList(OrderList instance);
    partial void InsertSendWay(SendWay instance);
    partial void UpdateSendWay(SendWay instance);
    partial void DeleteSendWay(SendWay instance);
    partial void InsertSendAddress(SendAddress instance);
    partial void UpdateSendAddress(SendAddress instance);
    partial void DeleteSendAddress(SendAddress instance);
    #endregion

public DataModelDataContext() : base(System.Configuration.ConfigurationManager.ConnectionStrings["BookShopDBConnectionString1"].ConnectionString, mappingSource)

{OnCreated();}
public DataModelDataContext(string connection) : 
base(connection, mappingSource)
{OnCreated();}

public DataModelDataContext(IDbConnection connection) : 
base(connection, mappingSource)
{OnCreated();}

public DataModelDataContext(string connection, MappingSource mappingSource) : 
base(connection, mappingSource)
{OnCreated();}

public DataModelDataContext(IDbConnection connection, MappingSource mappingSource) : 
base(connection, mappingSource)
{OnCreated();}
 public abstract class MappingSource
    {
        //
        // 摘要:
        //     Initializes a new instance of the System.Data.Linq.Mapping.MappingSource class.
        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        protected MappingSource();
        // 摘要:
        //     返回映射模型。
        // 参数:
        //   dataContextType:
        //     要返回的模型的 System.Data.Linq.DataContext 的类型。
        // 返回结果:
        //     与此映射源关联的映射模型。
        public MetaModel GetModel(Type dataContextType);
        // 摘要:
        //     创建新的映射模型。
        // 参数:
        //   dataContextType:
        //     映射要基于的 System.Data.Linq.DataContext 的类型。
        // 返回结果:
        //     为匹配当前的映射架构而创建的元模型。
        protected abstract MetaModel CreateModel(Type dataContextType);
    }public sealed class AttributeMappingSource : MappingSource
    {
        //
        // 摘要:
        //     初始化 System.Data.Linq.Mapping.AttributeMappingSource 类的新实例。
        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        public AttributeMappingSource();        protected override MetaModel CreateModel(Type dataContextType);
    }

解决方案 »

  1.   

    register方法返回的类型是int,你的data是一个类对象,你看一下是不是Pr_Register 返回的类型是什么吧
      

  2.   

    报错很明显啊,不能把对象转int
    Pr_Register返回的不是int。
      

  3.   

    那我应该怎么修改不是很懂初学者
    也试过这样:            var result = data.Pr_Register(UserName, RealName, Password, Address, phone, Email, RoleID, Re);
                DataTable table = new DataTable();
                table = result.CopyToDataTable();
                if (table != null)
                {
                    if (Convert.ToInt32(table.Rows[0][0].ToString()) != 0)
                        return Convert.ToInt32(table.Rows[0][0].ToString());
                    else
                        return -1;
                }
                else
                    return 0;
    能执行,但是还是会出错。返回值一直是-1.
      

  4.   

    var a =  data.Pr_Register(UserName, RealName, Password, Address, phone, Email, RoleID, Re ));
    return a ;//这里加断点 , 你看看 这a 是返回了一个什么玩意儿
      

  5.   

    值为:{System.Data.Linq.SqlClient.SqlProvider.SingleResult<Sample21_1.Models.Pr_RegisterResult>}
    然后有一个returnValue。